Source: Frothing Berserker NAME_END 2 ATK_END 4 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Warrior PLAYER_CLS_END NIL RACE_END Rare RARITY_END Whenever a minion takes damage, gain +1 Attack.

Target: class FrothingBerserker(MinionCard):§    def __init__(self):§        super().__init__("Frothing Berserker", 3, CHARACTER_CLASS.WARRIOR, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(2, 4, effects=[Effect(CharacterDamaged(player=BothPlayer(), condition=IsMinion()), ActionTag(Give(ChangeAttack(1)), SelfSelector()))])§


Source: Gadgetzan Auctioneer NAME_END 4 ATK_END 4 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END Whenever you cast a spell, draw a card.

Target: class GadgetzanAuctioneer(MinionCard):§    def __init__(self):§        super().__init__("Gadgetzan Auctioneer", 6, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(4, 4, effects=[Effect(SpellCast(), ActionTag(Draw(), PlayerSelector()))])§


Source: Gladiator's Longbow NAME_END 5 ATK_END -1 DEF_END 7 COST_END 2 DUR_END Weapon TYPE_END Hunter PLAYER_CLS_END NIL RACE_END Epic RARITY_END Your hero is <b>Immune</b> while attacking.

Target: class GladiatorsLongbow(WeaponCard):§    def __init__(self):§        super().__init__("Gladiator's Longbow", 7, CHARACTER_CLASS.HUNTER, CARD_RARITY.EPIC)§§    def create_weapon(self, player):§        return Weapon(5, 2, effects=[Effect(CharacterAttack(IsHero()), ActionTag(Give(BuffUntil(Immune(), AttackCompleted())), HeroSelector()))])§


Source: Grommash Hellscream NAME_END 4 ATK_END 9 DEF_END 8 COST_END -1 DUR_END Minion TYPE_END Warrior PLAYER_CLS_END NIL RACE_END Legendary RARITY_END Charge NL Enrage: +6 Attack

Target: class GrommashHellscream(MinionCard):§    def __init__(self):§        super().__init__("Grommash Hellscream", 8, CHARACTER_CLASS.WARRIOR, CARD_RARITY.LEGENDARY)§§    def create_minion(self, player):§        return Minion(4, 9, charge=True, enrage=[Aura(ChangeAttack(6), SelfSelector())])§


Source: Gruul NAME_END 7 ATK_END 7 DEF_END 8 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END At the end of each turn, gain +1/+1 .

Target: class Gruul(MinionCard):§    def __init__(self):§        super().__init__("Gruul", 8, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY)§§    def create_minion(self, player):§        return Minion(7, 7, effects=[Effect(TurnEnded(player=BothPlayer()), ActionTag(Give([Buff(ChangeAttack(1)), Buff(ChangeHealth(1))]), SelfSelector()))])§


Source: Harrison Jones NAME_END 5 ATK_END 4 DEF_END 5 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END <b>Battlecry:</b> Destroy your opponent's weapon and draw cards equal to its Durability.

Target: class HarrisonJones(MinionCard):§    def __init__(self):§        super().__init__("Harrison Jones", 5, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, battlecry=(Battlecry(Draw(Attribute("durability", WeaponSelector(EnemyPlayer()))), PlayerSelector()), Battlecry(Destroy(), WeaponSelector(EnemyPlayer()))))§§    def create_minion(self, player):§        return Minion(5, 4)§


Source: Harvest Golem NAME_END 2 ATK_END 3 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Mech RACE_END Common RARITY_END <b>Deathrattle:</b> Summon a 2/1 Damaged Golem.

Target: class HarvestGolem(MinionCard):§    def __init__(self):§        super().__init__("Harvest Golem", 3, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, minion_type=MINION_TYPE.MECH)§§    def create_minion(self, player):§        return Minion(2, 3, deathrattle=Deathrattle(Summon(DamagedGolem()), PlayerSelector()))§


Source: Headcrack NAME_END -1 ATK_END -1 DEF_END 3 COST_END -1 DUR_END Spell TYPE_END Rogue PLAYER_CLS_END NIL RACE_END Rare RARITY_END Deal $2 damage to the enemy hero. <b>Combo:</b> Return this to your hand next turn.

Target: class Headcrack(SpellCard):§    def __init__(self):§        super().__init__("Headcrack", 3, CHARACTER_CLASS.ROGUE, CARD_RARITY.RARE)§§    def use(self, player, game):§        super().use(player, game)§        game.other_player.hero.damage(player.effective_spell_damage(2), self)§        if player.cards_played > 0:§            player.add_effect(Effect(TurnEnded(), ActionTag(AddCard(self), PlayerSelector())))§


Source: Heavy Axe NAME_END 1 ATK_END -1 DEF_END 1 COST_END 3 DUR_END Weapon TYPE_END Warrior PLAYER_CLS_END NIL RACE_END NIL RARITY_END NIL

Target: class HeavyAxe(WeaponCard):§    def __init__(self):§        super().__init__("Heavy Axe", 1, CHARACTER_CLASS.WARRIOR, CARD_RARITY.COMMON, False)§§    def create_weapon(self, player):§        return Weapon(1, 3)§


Source: Hogger NAME_END 4 ATK_END 4 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END At the end of your turn, summon a 2/2 Gnoll with <b>Taunt</b>.

Target: class Hogger(MinionCard):§    def __init__(self):§        super().__init__("Hogger", 6, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY)§§    def create_minion(self, player):§        return Minion(4, 4, effects=[Effect(TurnEnded(), ActionTag(Summon(Gnoll()), PlayerSelector()))])§


Source: Holy Fire NAME_END -1 ATK_END -1 DEF_END 6 COST_END -1 DUR_END Spell TYPE_END Priest PLAYER_CLS_END NIL RACE_END Rare RARITY_END Deal $5 damage. Restore #5 Health to your hero.

Target: class HolyFire(SpellCard):§    def __init__(self):§        super().__init__("Holy Fire", 6, CHARACTER_CLASS.PRIEST, CARD_RARITY.RARE, target_func=hearthbreaker.targeting.find_minion_spell_target)§§    def use(self, player, game):§        super().use(player, game)§§        self.target.damage(player.effective_spell_damage(5), self)§        player.hero.heal(player.effective_heal_power(5), self)§


Source: Hungry Crab NAME_END 1 ATK_END 2 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Beast RACE_END Epic RARITY_END <b>Battlecry:</b> Destroy a Murloc and gain +2/+2.

Target: class HungryCrab(MinionCard):§    def __init__(self):§        super().__init__("Hungry Crab", 1, CHARACTER_CLASS.ALL, CARD_RARITY.EPIC, minion_type=MINION_TYPE.BEAST, battlecry=(Battlecry(Kill(), MinionSelector(IsType(MINION_TYPE.MURLOC), BothPlayer())), Battlecry(Give([Buff(ChangeAttack(2)), Buff(ChangeHealth(2))]), SelfSelector())))§§    def create_minion(self, player):§        return Minion(1, 2)§


Source: Hyena NAME_END 2 ATK_END 2 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Hunter PLAYER_CLS_END Beast RACE_END Rare RARITY_END NIL

Target: class Hyena(MinionCard):§    def __init__(self):§        super().__init__("Hyena", 2, CHARACTER_CLASS.HUNTER, CARD_RARITY.RARE, False, minion_type=MINION_TYPE.BEAST)§§    def create_minion(self, player):§        return Minion(2, 2)§


Source: Ice Barrier NAME_END -1 ATK_END -1 DEF_END 3 COST_END -1 DUR_END Spell TYPE_END Mage PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Secret:</b> When your hero is attacked, gain 8 Armor.

Target: class IceBarrier(SecretCard):§    def __init__(self):§        super().__init__("Ice Barrier", 3, CHARACTER_CLASS.MAGE, CARD_RARITY.COMMON)§§    def _reveal(self, attacker, target):§        if target is self.player.hero and not attacker.removed:§            attacker.player.game.other_player.hero.armor += 8§            super().reveal()§§    def activate(self, player):§        player.opponent.bind("character_attack", self._reveal)§§    def deactivate(self, player):§        player.opponent.unbind("character_attack", self._reveal)§


Source: Ice Block NAME_END -1 ATK_END -1 DEF_END 3 COST_END -1 DUR_END Spell TYPE_END Mage PLAYER_CLS_END NIL RACE_END Epic RARITY_END Secret: When your hero takes fatal damage, prevent it and become Immune this turn.

Target: class IceBlock(SecretCard):§    def __init__(self):§        super().__init__("Ice Block", 3, CHARACTER_CLASS.MAGE, CARD_RARITY.EPIC)§        self.player = None§§    def _reveal(self, character, attacker, amount):§        if character.is_hero():§            if character.health - amount <= 0:§                character.add_buff(BuffUntil(Immune(), TurnEnded(player=CurrentPlayer())))§                super().reveal()§§    def activate(self, player):§        player.bind("pre_damage", self._reveal)§§    def deactivate(self, player):§        player.unbind("pre_damage", self._reveal)§


Source: Ice Lance NAME_END -1 ATK_END -1 DEF_END 1 COST_END -1 DUR_END Spell TYPE_END Mage PLAYER_CLS_END NIL RACE_END Common RARITY_END Freeze a character. If it was already Frozen, deal $4 damage instead.

Target: class IceLance(SpellCard):§    def __init__(self):§        super().__init__("Ice Lance", 1, CHARACTER_CLASS.MAGE, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        if self.target.frozen:§            self.target.damage(4, self)§        else:§            self.target.add_buff(Buff(Frozen()))§


Source: Illidan Stormrage NAME_END 7 ATK_END 5 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Demon RACE_END Legendary RARITY_END Whenever you play a card, summon a 2/1 Flame of Azzinoth.

Target: class IllidanStormrage(MinionCard):§    def __init__(self):§        super().__init__("Illidan Stormrage", 6, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, minion_type=MINION_TYPE.DEMON)§§    def create_minion(self, player):§        return Minion(7, 5, effects=[Effect(CardPlayed(), ActionTag(Summon(FlameOfAzzinoth()), PlayerSelector()))])§


Source: Imp NAME_END 1 ATK_END 1 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Demon RACE_END Rare RARITY_END NIL

Target: class Imp(MinionCard):§    def __init__(self):§        super().__init__("Imp", 1, CHARACTER_CLASS.ALL, CARD_RARITY.RARE, False, minion_type=MINION_TYPE.DEMON)§§    def create_minion(self, player):§        return Minion(1, 1)§


Source: Imp Master NAME_END 1 ATK_END 5 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END At the end of your turn, deal 1 damage to this minion and summon a 1/1 Imp.

Target: class ImpMaster(MinionCard):§    def __init__(self):§        super().__init__("Imp Master", 3, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(1, 5, effects=[Effect(TurnEnded(), ActionTag(Damage(1), SelfSelector())), Effect(TurnEnded(), ActionTag(Summon(Imp()), PlayerSelector()))])§


Source: Inner Fire NAME_END -1 ATK_END -1 DEF_END 1 COST_END -1 DUR_END Spell TYPE_END Priest PLAYER_CLS_END NIL RACE_END Common RARITY_END Change a minion's Attack to be equal to its Health.

Target: class InnerFire(SpellCard):§    def __init__(self):§        super().__init__("Inner Fire", 1, CHARACTER_CLASS.PRIEST, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_minion_spell_target)§§    def use(self, player, game):§        super().use(player, game)§§        delta = self.target.health - self.target.calculate_attack()§        self.target.change_attack(delta)§


Source: Inner Rage NAME_END -1 ATK_END -1 DEF_END 0 COST_END -1 DUR_END Spell TYPE_END Warrior PLAYER_CLS_END NIL RACE_END Common RARITY_END Deal $1 damage to a minion and give it +2 Attack.

Target: class InnerRage(SpellCard):§    def __init__(self):§        super().__init__("Inner Rage", 0, CHARACTER_CLASS.WARRIOR, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_minion_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        self.target.damage(1, self)§        self.target.change_attack(2)§


Source: Ironbeak Owl NAME_END 2 ATK_END 1 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Beast RACE_END Common RARITY_END Battlecry: Silence a minion.

Target: class IronbeakOwl(MinionCard):§    def __init__(self):§        super().__init__("Ironbeak Owl", 2, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, minion_type=MINION_TYPE.BEAST, battlecry=Battlecry(Silence(), MinionSelector(players=BothPlayer(), picker=UserPicker())))§§    def create_minion(self, player):§        return Minion(2, 1)§


Source: Jungle Panther NAME_END 4 ATK_END 2 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Beast RACE_END Common RARITY_END <b>Stealth</b>

Target: class JunglePanther(MinionCard):§    def __init__(self):§        super().__init__("Jungle Panther", 3, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, minion_type=MINION_TYPE.BEAST)§§    def create_minion(self, player):§        return Minion(4, 2, stealth=True)§


Source: Keeper of the Grove NAME_END 2 ATK_END 4 DEF_END 4 COST_END -1 DUR_END Minion TYPE_END Druid PLAYER_CLS_END NIL RACE_END Rare RARITY_END Choose One - Deal 2 damage; or Silence a minion.

Target: class KeeperOfTheGrove(MinionCard):§    def __init__(self):§        super().__init__("Keeper of the Grove", 4, CHARACTER_CLASS.DRUID, CARD_RARITY.RARE, choices=[§            Choice(Moonfire(), Damage(2), CharacterSelector(players=BothPlayer(), picker=UserPicker())),§            Choice(Dispel(), Silence(), MinionSelector(players=BothPlayer(), picker=UserPicker()))§        ])§§    def create_minion(self, player):§        return Minion(2, 4)§


Source: Kidnapper NAME_END 5 ATK_END 3 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Rogue PLAYER_CLS_END NIL RACE_END Epic RARITY_END <b>Combo:</b> Return a minion to its owner's hand.

Target: class Kidnapper(MinionCard):§    def __init__(self):§        super().__init__("Kidnapper", 6, CHARACTER_CLASS.ROGUE, CARD_RARITY.EPIC, combo=Battlecry(Bounce(), MinionSelector(picker=UserPicker(), players=BothPlayer())))§§    def create_minion(self, player):§        return Minion(5, 3)§


Source: King Krush NAME_END 8 ATK_END 8 DEF_END 9 COST_END -1 DUR_END Minion TYPE_END Hunter PLAYER_CLS_END Beast RACE_END Legendary RARITY_END <b>Charge</b>

Target: class KingKrush(MinionCard):§    def __init__(self):§        super().__init__("King Krush", 9, CHARACTER_CLASS.HUNTER, CARD_RARITY.LEGENDARY, minion_type=MINION_TYPE.BEAST)§§    def create_minion(self, player):§        return Minion(8, 8, charge=True)§


Source: King Mukla NAME_END 5 ATK_END 5 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Beast RACE_END Legendary RARITY_END <b>Battlecry:</b> Give your opponent 2 Bananas.

Target: class KingMukla(MinionCard):§    def __init__(self):§        super().__init__("King Mukla", 3, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, minion_type=MINION_TYPE.BEAST, battlecry=Battlecry(AddCard(Bananas(), 2), PlayerSelector(EnemyPlayer())))§§    def create_minion(self, player):§        return Minion(5, 5)§


Source: Laughing Sister NAME_END 3 ATK_END 5 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Dream PLAYER_CLS_END NIL RACE_END NIL RARITY_END Can't be targeted by spells or Hero Powers.

Target: class LaughingSister(MinionCard):§    def __init__(self):§        super().__init__("Laughing Sister", 3, CHARACTER_CLASS.DREAM, CARD_RARITY.COMMON, False)§§    def create_minion(self, player):§        return Minion(3, 5, spell_targetable=False)§


Source: Lava Burst NAME_END -1 ATK_END -1 DEF_END 3 COST_END -1 DUR_END Spell TYPE_END Shaman PLAYER_CLS_END NIL RACE_END Rare RARITY_END Deal $5 damage. <b>Overload:</b> (2)

Target: class LavaBurst(SpellCard):§    def __init__(self):§        super().__init__("Lava Burst", 3, CHARACTER_CLASS.SHAMAN, CARD_RARITY.RARE, target_func=hearthbreaker.targeting.find_spell_target, overload=2)§§    def use(self, player, game):§        super().use(player, game)§§        self.target.damage(player.effective_spell_damage(5), self)§


Source: Lay on Hands NAME_END -1 ATK_END -1 DEF_END 8 COST_END -1 DUR_END Spell TYPE_END Paladin PLAYER_CLS_END NIL RACE_END Epic RARITY_END Restore #8 Health. Draw 3 cards.

Target: class LayOnHands(SpellCard):§    def __init__(self):§        super().__init__("Lay on Hands", 8, CHARACTER_CLASS.PALADIN, CARD_RARITY.EPIC, target_func=hearthbreaker.targeting.find_spell_target)§§    def use(self, player, game):§        super().use(player, game)§§        self.target.heal(player.effective_heal_power(8), self)§        player.draw()§        player.draw()§        player.draw()§


Source: Leeroy Jenkins NAME_END 6 ATK_END 2 DEF_END 5 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END Charge. Battlecry: Summon two 1/1 Whelps for your opponent.

Target: class LeeroyJenkins(MinionCard):§    def __init__(self):§        super().__init__("Leeroy Jenkins", 5, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, battlecry=Battlecry(Summon(Whelp(), 2), PlayerSelector(players=EnemyPlayer())))§§    def create_minion(self, player):§        return Minion(6, 2, charge=True)§


Source: Leper Gnome NAME_END 2 ATK_END 1 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Deathrattle:</b> Deal 2 damage to the enemy hero.

Target: class LeperGnome(MinionCard):§    def __init__(self):§        super().__init__("Leper Gnome", 1, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(2, 1, deathrattle=Deathrattle(Damage(2), HeroSelector(EnemyPlayer())))§


Source: Lightning Bolt NAME_END -1 ATK_END -1 DEF_END 1 COST_END -1 DUR_END Spell TYPE_END Shaman PLAYER_CLS_END NIL RACE_END Common RARITY_END Deal $3 damage. <b>Overload:</b> (1)

Target: class LightningBolt(SpellCard):§    def __init__(self):§        super().__init__("Lightning Bolt", 1, CHARACTER_CLASS.SHAMAN, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_spell_target, overload=1)§§    def use(self, player, game):§        super().use(player, game)§§        self.target.damage(player.effective_spell_damage(3), self)§


Source: Lightning Storm NAME_END -1 ATK_END -1 DEF_END 3 COST_END -1 DUR_END Spell TYPE_END Shaman PLAYER_CLS_END NIL RACE_END Rare RARITY_END Deal $2-$3 damage to all enemy minions. <b>Overload:</b> (2)

Target: class LightningStorm(SpellCard):§    def __init__(self):§        super().__init__("Lightning Storm", 3, CHARACTER_CLASS.SHAMAN, CARD_RARITY.RARE, overload=2)§§    def use(self, player, game):§        super().use(player, game)§§        for minion in copy.copy(game.other_player.minions):§            minion.damage(player.effective_spell_damage(game.random_amount(2, 3)), self)§


Source: Lightspawn NAME_END 0 ATK_END 5 DEF_END 4 COST_END -1 DUR_END Minion TYPE_END Priest PLAYER_CLS_END NIL RACE_END Common RARITY_END This minion's Attack is always equal to its Health.

Target: class Lightspawn(MinionCard):§    def __init__(self):§        super().__init__("Lightspawn", 4, CHARACTER_CLASS.PRIEST, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(0, 5, buffs=[Buff(AttackEqualsHealth())])§


Source: Loot Hoarder NAME_END 2 ATK_END 1 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Deathrattle:</b> Draw a card.

Target: class LootHoarder(MinionCard):§    def __init__(self):§        super().__init__("Loot Hoarder", 2, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(2, 1, deathrattle=Deathrattle(Draw(), PlayerSelector()))§


Source: Lord Jaraxxus NAME_END 0 ATK_END 15 DEF_END 0 COST_END -1 DUR_END Hero TYPE_END Warlock PLAYER_CLS_END Demon RACE_END Legendary RARITY_END NIL

Target: class LordJaraxxus(MinionCard):§    def __init__(self):§        super().__init__("Lord Jaraxxus", 9, CHARACTER_CLASS.WARLOCK, CARD_RARITY.LEGENDARY, minion_type=MINION_TYPE.DEMON, battlecry=(Battlecry(ReplaceHeroWithMinion(Jaraxxus()), HeroSelector()), Battlecry(Remove(), SelfSelector()), Battlecry(Equip(BloodFury()), PlayerSelector())))§§    def create_minion(self, player):§        return Minion(3, 15)§


Source: Lord Jaraxxus NAME_END 3 ATK_END 15 DEF_END 9 COST_END -1 DUR_END Minion TYPE_END Warlock PLAYER_CLS_END Demon RACE_END Legendary RARITY_END <b>Battlecry:</b> Destroy your hero and replace it with Lord Jaraxxus.

Target: class LordJaraxxus(MinionCard):§    def __init__(self):§        super().__init__("Lord Jaraxxus", 9, CHARACTER_CLASS.WARLOCK, CARD_RARITY.LEGENDARY, minion_type=MINION_TYPE.DEMON, battlecry=(Battlecry(ReplaceHeroWithMinion(Jaraxxus()), HeroSelector()), Battlecry(Remove(), SelfSelector()), Battlecry(Equip(BloodFury()), PlayerSelector())))§§    def create_minion(self, player):§        return Minion(3, 15)§


Source: Lorewalker Cho NAME_END 0 ATK_END 4 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END Whenever a player casts a spell, put a copy into the other player’s hand.

Target: class LorewalkerCho(MinionCard):§    def __init__(self):§        super().__init__("Lorewalker Cho", 2, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY)§§    def create_minion(self, player):§        return Minion(0, 4, effects=[Effect(SpellCast(player=BothPlayer()), ActionTag(AddCard(CardQuery(source=CARD_SOURCE.LAST_CARD)), PlayerSelector(OtherPlayer())))])§


Source: Mad Bomber NAME_END 3 ATK_END 2 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Battlecry:</b> Deal 3 damage randomly split between all other characters.

Target: class MadBomber(MinionCard):§    def __init__(self):§        super().__init__("Mad Bomber", 2, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, battlecry=Battlecry(Damage(1), CharacterSelector(players=BothPlayer(), picker=RandomPicker(3))))§§    def create_minion(self, player):§        return Minion(3, 2)§


Source: Malygos NAME_END 4 ATK_END 12 DEF_END 9 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END Legendary RARITY_END <b>Spell Damage +5</b>

Target: class Malygos(MinionCard):§    def __init__(self):§        super().__init__("Malygos", 9, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, minion_type=MINION_TYPE.DRAGON)§§    def create_minion(self, player):§        return Minion(4, 12, spell_damage=5)§


Source: Mana Addict NAME_END 1 ATK_END 3 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END Whenever you cast a spell, gain +2 Attack this turn.

Target: class ManaAddict(MinionCard):§    def __init__(self):§        super().__init__("Mana Addict", 2, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(1, 3, effects=[Effect(SpellCast(), ActionTag(Give(BuffUntil(ChangeAttack(2), TurnEnded())), SelfSelector()))])§


Source: Mana Tide Totem NAME_END 0 ATK_END 3 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Shaman PLAYER_CLS_END Totem RACE_END Rare RARITY_END At the end of your turn, draw a card.

Target: class ManaTideTotem(MinionCard):§    def __init__(self):§        super().__init__("Mana Tide Totem", 3, CHARACTER_CLASS.SHAMAN, CARD_RARITY.RARE, minion_type=MINION_TYPE.TOTEM)§§    def create_minion(self, player):§        return Minion(0, 3, effects=[Effect(TurnEnded(), ActionTag(Draw(), PlayerSelector()))])§


Source: Mark of Nature NAME_END -1 ATK_END -1 DEF_END 3 COST_END -1 DUR_END Spell TYPE_END Druid PLAYER_CLS_END NIL RACE_END Common RARITY_END Choose One - Give a minion +4 Attack; or +4 Health and Taunt.

Target: class MarkOfNature(SpellCard):§    def __init__(self):§        super().__init__("Mark of Nature", 3, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_minion_spell_target)§§    def use(self, player, game):§        class MarkOfNatureAttack(ChoiceCard):§            def __init__(self):§                super().__init__("Mark of Nature +4 Attack", 0, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON, False, target_func=hearthbreaker.targeting.find_minion_spell_target)§§            def use(self, player, game):§                target.change_attack(4)§§        class MarkOfNatureHealth(ChoiceCard):§            def __init__(self):§                super().__init__("Mark of Nature +4 Health", 0, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON, False, target_func=hearthbreaker.targeting.find_minion_spell_target)§§            def use(self, player, game):§                target.increase_health(4)§                target.taunt = True§§        super().use(player, game)§        target = self.target§        option = game.current_player.agent.choose_option([MarkOfNatureAttack(), MarkOfNatureHealth()], player)§        option.use(player, game)§


Source: Mass Dispel NAME_END -1 ATK_END -1 DEF_END 4 COST_END -1 DUR_END Spell TYPE_END Priest PLAYER_CLS_END NIL RACE_END Rare RARITY_END <b>Silence</b> all enemy minions. Draw a card.

Target: class MassDispel(SpellCard):§    def __init__(self):§        super().__init__("Mass Dispel", 4, CHARACTER_CLASS.PRIEST, CARD_RARITY.RARE)§§    def use(self, player, game):§        super().use(player, game)§§        for minion in game.other_player.minions:§            minion.silence()§§        player.draw()§


Source: Master Swordsmith NAME_END 1 ATK_END 3 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END At the end of your turn, give another random friendly minion +1 Attack.

Target: class MasterSwordsmith(MinionCard):§    def __init__(self):§        super().__init__("Master Swordsmith", 2, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(1, 3, effects=[Effect(TurnEnded(), ActionTag(Give(ChangeAttack(1)), MinionSelector(picker=RandomPicker())))])§


Source: Master of Disguise NAME_END 4 ATK_END 4 DEF_END 4 COST_END -1 DUR_END Minion TYPE_END Rogue PLAYER_CLS_END NIL RACE_END Rare RARITY_END Battlecry: Give a friendly minion Stealth.

Target: class MasterOfDisguise(MinionCard):§    def __init__(self):§        super().__init__("Master of Disguise", 4, CHARACTER_CLASS.ROGUE, CARD_RARITY.RARE, battlecry=Battlecry(Give(Stealth()), MinionSelector(picker=UserPicker())))§§    def create_minion(self, player):§        return Minion(4, 4)§


Source: Millhouse Manastorm NAME_END 4 ATK_END 4 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END <b>Battlecry:</b> Enemy spells cost (0) next turn.

Target: class MillhouseManastorm(MinionCard):§    def __init__(self):§        super().__init__("Millhouse Manastorm", 2, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, battlecry=Battlecry(GiveAura(AuraUntil(ManaChange(-100), CardSelector(condition=IsSpell()), TurnEnded())), PlayerSelector(players=EnemyPlayer())))§§    def create_minion(self, player):§        return Minion(4, 4)§


Source: Mind Control Tech NAME_END 3 ATK_END 3 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END <b>Battlecry:</b> If your opponent has 4 or more minions, take control of one at random.

Target: class MindControlTech(MinionCard):§    def __init__(self):§        super().__init__("Mind Control Tech", 3, CHARACTER_CLASS.ALL, CARD_RARITY.RARE, battlecry=Battlecry(Steal(), MinionSelector(players=EnemyPlayer(), condition=None, picker=RandomPicker()), OpponentMinionCountIsGreaterThan(3)) )§§    def create_minion(self, player):§        return Minion(3, 3)§


Source: Mindgames NAME_END -1 ATK_END -1 DEF_END 4 COST_END -1 DUR_END Spell TYPE_END Priest PLAYER_CLS_END NIL RACE_END Epic RARITY_END Put a copy of a random minion from your opponent's deck into the battlefield.

Target: class Mindgames(SpellCard):§    def __init__(self):§        super().__init__("Mindgames", 4, CHARACTER_CLASS.PRIEST, CARD_RARITY.EPIC)§§    def use(self, player, game):§        super().use(player, game)§§        minion_card = game.random_draw(game.other_player.deck.cards, lambda c: not c.drawn and isinstance(c, MinionCard))§        if not minion_card:§            minion_card = ShadowOfNothing()§        else:§            minion_card = copy.copy(minion_card)§        minion_card.drawn = True§        minion_card.summon(player, game, 0)§§    def can_use(self, player, game):§        return super().can_use(player, game) and len(player.minions) < 7§


Source: Mirror Entity NAME_END -1 ATK_END -1 DEF_END 3 COST_END -1 DUR_END Spell TYPE_END Mage PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Secret:</b> When your opponent plays a minion, summon a copy of it.

Target: class MirrorEntity(SecretCard):§    def __init__(self):§        super().__init__("Mirror Entity", 3, CHARACTER_CLASS.MAGE, CARD_RARITY.COMMON)§        self.player = None§§    def _reveal(self, minion):§        if len(self.player.minions) < 7:§            mirror = minion.copy(self.player)§            mirror.add_to_board(len(self.player.minions))§            minion.player.trigger("minion_summoned", mirror)§            minion.player.trigger("after_added", mirror)§            super().reveal()§§    def activate(self, player):§        player.game.current_player.bind("minion_played", self._reveal)§        self.player = player§§    def deactivate(self, player):§        player.game.current_player.unbind("minion_played", self._reveal)§        self.player = None§


Source: Molten Giant NAME_END 8 ATK_END 8 DEF_END 20 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Epic RARITY_END Costs (1) less for each damage your hero has taken.

Target: class MoltenGiant(MinionCard):§    def __init__(self):§        super().__init__("Molten Giant", 20, CHARACTER_CLASS.ALL, CARD_RARITY.EPIC, buffs=[Buff(ManaChange(Attribute("damage", HeroSelector()), -1))])§§    def create_minion(self, player):§        return Minion(8, 8)§


Source: Mortal Strike NAME_END -1 ATK_END -1 DEF_END 4 COST_END -1 DUR_END Spell TYPE_END Warrior PLAYER_CLS_END NIL RACE_END Rare RARITY_END Deal $4 damage. If you have 12 or less Health, deal $6 instead.

Target: class MortalStrike(SpellCard):§    def __init__(self):§        super().__init__("Mortal Strike", 4, CHARACTER_CLASS.WARRIOR, CARD_RARITY.RARE, target_func=hearthbreaker.targeting.find_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        if player.hero.health <= 12:§            self.target.damage(player.effective_spell_damage(6), self)§        else:§            self.target.damage(player.effective_spell_damage(4), self)§


Source: Mountain Giant NAME_END 8 ATK_END 8 DEF_END 12 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Epic RARITY_END Costs (1) less for each other card in your hand.

Target: class MountainGiant(MinionCard):§    def __init__(self):§        super().__init__("Mountain Giant", 12, CHARACTER_CLASS.ALL, CARD_RARITY.EPIC, buffs=[Buff(ManaChange(Count(CardSelector()), -1))])§§    def create_minion(self, player):§        return Minion(8, 8)§


Source: Murloc Tidecaller NAME_END 1 ATK_END 2 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Murloc RACE_END Rare RARITY_END Whenever a Murloc is summoned, gain +1 Attack.

Target: class MurlocTidecaller(MinionCard):§    def __init__(self):§        super().__init__("Murloc Tidecaller", 1, CHARACTER_CLASS.ALL, CARD_RARITY.RARE, minion_type=MINION_TYPE.MURLOC)§§    def create_minion(self, player):§        return Minion(1, 2, effects=[(Effect(MinionSummoned(IsType(MINION_TYPE.MURLOC), player=BothPlayer()), ActionTag(Give(ChangeAttack(1)), SelfSelector())))])§


Source: Murloc Warleader NAME_END 3 ATK_END 3 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Murloc RACE_END Epic RARITY_END ALL other Murlocs have +2/+1.

Target: class MurlocWarleader(MinionCard):§    def __init__(self):§        super().__init__("Murloc Warleader", 3, CHARACTER_CLASS.ALL, CARD_RARITY.EPIC, minion_type=MINION_TYPE.MURLOC)§§    def create_minion(self, player):§        return Minion(3, 3, auras=[Aura(ChangeAttack(2), MinionSelector(IsType(MINION_TYPE.MURLOC), BothPlayer())), Aura(ChangeHealth(1), MinionSelector(IsType(MINION_TYPE.MURLOC), BothPlayer()))])§


Source: Nat Pagle NAME_END 0 ATK_END 4 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END At the start of your turn, you have a 50% chance to draw an extra card.

Target: class NatPagle(MinionCard):§    def __init__(self):§        super().__init__("Nat Pagle", 2, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY)§§    def create_minion(self, player):§        return Minion(0, 4, effects=[Effect(TurnStarted(), ActionTag(Draw(), PlayerSelector(), OneIn(2)))])§


Source: Naturalize NAME_END -1 ATK_END -1 DEF_END 1 COST_END -1 DUR_END Spell TYPE_END Druid PLAYER_CLS_END NIL RACE_END Common RARITY_END Destroy a minion. Your opponent draws 2 cards.

Target: class Naturalize(SpellCard):§    def __init__(self):§        super().__init__("Naturalize", 1, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_minion_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        self.target.die(self)§        game.other_player.draw()§        game.other_player.draw()§


Source: Nightmare NAME_END -1 ATK_END -1 DEF_END 0 COST_END -1 DUR_END Spell TYPE_END Dream PLAYER_CLS_END NIL RACE_END NIL RARITY_END Give a minion +5/+5. At the start of your next turn, destroy it.

Target: class Nightmare(SpellCard):§    def __init__(self):§        super().__init__("Nightmare", 0, CHARACTER_CLASS.DREAM, CARD_RARITY.COMMON, False, hearthbreaker.targeting.find_minion_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        self.target.add_buff(Buff(ChangeAttack(5)))§        self.target.add_buff(Buff(ChangeHealth(5)))§        self.target.add_effect(Effect(TurnStarted(player=CurrentPlayer()), ActionTag(Kill(), SelfSelector())))§


Source: Nozdormu NAME_END 8 ATK_END 8 DEF_END 9 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END Legendary RARITY_END Players only have 15 seconds to take their turns.

Target: class Nozdormu(MinionCard):§    def __init__(self):§        super().__init__("Nozdormu", 9, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, minion_type=MINION_TYPE.DRAGON)§§    def create_minion(self, player):§        return Minion(8, 8)§


Source: Onyxia NAME_END 8 ATK_END 8 DEF_END 9 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END Legendary RARITY_END <b>Battlecry:</b> Summon 1/1 Whelps until your side of the battlefield is full.

Target: class Onyxia(MinionCard):§    def __init__(self):§        super().__init__("Onyxia", 9, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, minion_type=MINION_TYPE.DRAGON, battlecry=Battlecry(Summon(Whelp(), 6), PlayerSelector()))§§    def create_minion(self, player):§        return Minion(8, 8)§


Source: Panther NAME_END 3 ATK_END 2 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Druid PLAYER_CLS_END Beast RACE_END Common RARITY_END NIL

Target: class Panther(MinionCard):§    def __init__(self):§        super().__init__("Panther", 2, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON, False, MINION_TYPE.BEAST)§§    def create_minion(self, _):§        return Minion(3, 2, MINION_TYPE.BEAST)§


Source: Patient Assassin NAME_END 1 ATK_END 1 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Rogue PLAYER_CLS_END NIL RACE_END Epic RARITY_END <b>Stealth</b>. Destroy any minion damaged by this minion.

Target: class PatientAssassin(MinionCard):§    def __init__(self):§        super().__init__("Patient Assassin", 2, CHARACTER_CLASS.ROGUE, CARD_RARITY.EPIC)§§    def create_minion(self, player):§        return Minion(1, 1, stealth=True, effects=[Effect(DidDamage(), ActionTag(Kill(), TargetSelector(IsMinion())))])§


Source: Perdition's Blade NAME_END 2 ATK_END -1 DEF_END 3 COST_END 2 DUR_END Weapon TYPE_END Rogue PLAYER_CLS_END NIL RACE_END Rare RARITY_END Battlecry: Deal 1 damage. Combo: Deal 2 instead.

Target: class PerditionsBlade(WeaponCard):§    def __init__(self):§        super().__init__("Perdition's Blade", 3, CHARACTER_CLASS.ROGUE, CARD_RARITY.RARE, battlecry=Battlecry(Damage(1), CharacterSelector(None, picker=UserPicker())), combo=Battlecry(Damage(2), CharacterSelector(None, picker=UserPicker())))§§    def create_weapon(self, player):§        return Weapon(2, 2)§


Source: Pint-Sized Summoner NAME_END 2 ATK_END 2 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END The first minion you play each turn costs (1) less.

Target: class PintSizedSummoner(MinionCard):§    def __init__(self):§        super().__init__("Pint-Sized Summoner", 2, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(2, 2, effects=[Effect(TurnStarted(), ActionTag(GiveAura(AuraUntil(ManaChange(-1), CardSelector( condition=IsMinion()), MinionPlaced())), PlayerSelector()))])§


Source: Pit Lord NAME_END 5 ATK_END 6 DEF_END 4 COST_END -1 DUR_END Minion TYPE_END Warlock PLAYER_CLS_END Demon RACE_END Epic RARITY_END <b>Battlecry:</b> Deal 5 damage to your hero.

Target: class PitLord(MinionCard):§    def __init__(self):§        super().__init__("Pit Lord", 4, CHARACTER_CLASS.WARLOCK, CARD_RARITY.EPIC, minion_type=MINION_TYPE.DEMON, battlecry=Battlecry(Damage(5), HeroSelector()))§§    def create_minion(self, player):§        return Minion(5, 6)§


Source: Power Overwhelming NAME_END -1 ATK_END -1 DEF_END 1 COST_END -1 DUR_END Spell TYPE_END Warlock PLAYER_CLS_END NIL RACE_END Common RARITY_END Give a friendly minion +4/+4 until end of turn. Then, it dies. Horribly.

Target: class PowerOverwhelming(SpellCard):§    def __init__(self):§        super().__init__("Power Overwhelming", 1, CHARACTER_CLASS.WARLOCK, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_friendly_minion_spell_target)§§    def use(self, player, game):§        super().use(player, game)§§        self.target.add_effect(Effect(TurnEnded(), ActionTag(Kill(), SelfSelector())))§        self.target.change_attack(4)§        self.target.increase_health(4)§


Source: Priestess of Elune NAME_END 5 ATK_END 4 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Battlecry:</b> Restore 4 Health to your hero.

Target: class PriestessOfElune(MinionCard):§    def __init__(self):§        super().__init__("Priestess of Elune", 6, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, battlecry=Battlecry(Heal(4), HeroSelector()))§§    def create_minion(self, player):§        return Minion(5, 4)§


Source: Prophet Velen NAME_END 7 ATK_END 7 DEF_END 7 COST_END -1 DUR_END Minion TYPE_END Priest PLAYER_CLS_END NIL RACE_END Legendary RARITY_END Double the damage and healing of your spells and Hero Power.

Target: class ProphetVelen(MinionCard):§    def __init__(self):§        super().__init__("Prophet Velen", 7, CHARACTER_CLASS.PRIEST, CARD_RARITY.LEGENDARY)§§    def create_minion(self, player):§        return Minion(7, 7, auras=[Aura(MultiplySpellDamage(2), PlayerSelector()), Aura(MultiplyHealAmount(2), PlayerSelector())])§


Source: Pyroblast NAME_END -1 ATK_END -1 DEF_END 10 COST_END -1 DUR_END Spell TYPE_END Mage PLAYER_CLS_END NIL RACE_END Epic RARITY_END Deal $10 damage.

Target: class Pyroblast(SpellCard):§    def __init__(self):§        super().__init__("Pyroblast", 10, CHARACTER_CLASS.MAGE, CARD_RARITY.EPIC, target_func=hearthbreaker.targeting.find_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        self.target.damage(player.effective_spell_damage(10), self)§


Source: Questing Adventurer NAME_END 2 ATK_END 2 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END Whenever you play a card, gain +1/+1.

Target: class QuestingAdventurer(MinionCard):§    def __init__(self):§        super().__init__("Questing Adventurer", 3, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(2, 2, effects=[Effect(CardPlayed(), ActionTag(Give([Buff(ChangeAttack(1)), Buff(ChangeHealth(1))]), SelfSelector()))])§


Source: Raging Worgen NAME_END 3 ATK_END 3 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END Enrage: Windfury and +1 Attack

Target: class RagingWorgen(MinionCard):§    def __init__(self):§        super().__init__("Raging Worgen", 3, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(3, 3, enrage=[Aura(ChangeAttack(1), SelfSelector()), Aura(Windfury(), SelfSelector())])§


Source: Ragnaros the Firelord NAME_END 8 ATK_END 8 DEF_END 8 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END Can't attack. At the end of your turn, deal 8 damage to a random enemy.

Target: class RagnarosTheFirelord(MinionCard):§    def __init__(self):§        super().__init__("Ragnaros the Firelord", 8, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY)§§    def create_minion(self, player):§        return Minion(8, 8, effects=[Effect(TurnEnded(), ActionTag(Damage(8), CharacterSelector(players=EnemyPlayer(), picker=RandomPicker())))], buffs=[Buff(CantAttack())])§


Source: Rampage NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Warrior PLAYER_CLS_END NIL RACE_END Common RARITY_END Give a damaged minion +3/+3.

Target: class Rampage(SpellCard):§    def __init__(self):§        super().__init__("Rampage", 2, CHARACTER_CLASS.WARRIOR, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_minion_spell_target, filter_func=lambda target: target.health != target.calculate_max_health() and target.spell_targetable())§§    def use(self, player, game):§        super().use(player, game)§        self.target.change_attack(3)§        self.target.increase_health(3)§


Source: Ravenholdt Assassin NAME_END 7 ATK_END 5 DEF_END 7 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END <b>Stealth</b>

Target: class RavenholdtAssassin(MinionCard):§    def __init__(self):§        super().__init__("Ravenholdt Assassin", 7, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(7, 5, stealth=True)§


Source: SI:7 Agent NAME_END 3 ATK_END 3 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Rogue PLAYER_CLS_END NIL RACE_END Rare RARITY_END <b>Combo:</b> Deal 2 damage.

Target: class SI7Agent(MinionCard):§    def __init__(self):§        super().__init__("SI:7 Agent", 3, CHARACTER_CLASS.ROGUE, CARD_RARITY.RARE, combo=Battlecry(Damage(2), CharacterSelector( players=BothPlayer(), picker=UserPicker()) ))§§    def create_minion(self, player):§        return Minion(3, 3)§


Source: Savagery NAME_END -1 ATK_END -1 DEF_END 1 COST_END -1 DUR_END Spell TYPE_END Druid PLAYER_CLS_END NIL RACE_END Rare RARITY_END Deal damage equal to your hero's Attack to a minion.

Target: class Savagery(SpellCard):§    def __init__(self):§        super().__init__("Savagery", 1, CHARACTER_CLASS.DRUID, CARD_RARITY.RARE, target_func=hearthbreaker.targeting.find_minion_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        self.target.damage(player.effective_spell_damage(player.hero.calculate_attack()), self)§


Source: Savannah Highmane NAME_END 6 ATK_END 5 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Hunter PLAYER_CLS_END Beast RACE_END Rare RARITY_END <b>Deathrattle:</b> Summon two 2/2 Hyenas.

Target: class SavannahHighmane(MinionCard):§    def __init__(self):§        super().__init__("Savannah Highmane", 6, CHARACTER_CLASS.HUNTER, CARD_RARITY.RARE, minion_type=MINION_TYPE.BEAST)§§    def create_minion(self, player):§        return Minion(6, 5, deathrattle=Deathrattle(Summon(Hyena(), 2), PlayerSelector()))§


Source: Scarlet Crusader NAME_END 3 ATK_END 1 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Divine Shield</b>

Target: class ScarletCrusader(MinionCard):§    def __init__(self):§        super().__init__("Scarlet Crusader", 3, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(3, 1, divine_shield=True)§


Source: Scavenging Hyena NAME_END 2 ATK_END 2 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Hunter PLAYER_CLS_END Beast RACE_END Common RARITY_END Whenever a friendly Beast dies, gain +2/+1.

Target: class ScavengingHyena(MinionCard):§    def __init__(self):§        super().__init__("Scavenging Hyena", 2, CHARACTER_CLASS.HUNTER, CARD_RARITY.COMMON, minion_type=MINION_TYPE.BEAST)§§    def create_minion(self, player):§        return Minion(2, 2, effects=[Effect(MinionDied(IsType(MINION_TYPE.BEAST)), ActionTag(Give(ChangeAttack(2)), SelfSelector())), Effect(MinionDied(IsType(MINION_TYPE.BEAST)), ActionTag(Give(ChangeHealth(1)), SelfSelector()))])§


Source: Sea Giant NAME_END 8 ATK_END 8 DEF_END 10 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Epic RARITY_END Costs (1) less for each other minion on the battlefield.

Target: class SeaGiant(MinionCard):§    def __init__(self):§        super().__init__("Sea Giant", 10, CHARACTER_CLASS.ALL, CARD_RARITY.EPIC, buffs=[Buff(ManaChange(Count(MinionSelector(None, BothPlayer())), -1))])§§    def create_minion(self, player):§        return Minion(8, 8)§


Source: Secretkeeper NAME_END 1 ATK_END 2 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END Whenever a <b>Secret</b> is played, gain +1/+1.

Target: class Secretkeeper(MinionCard):§    def __init__(self):§        super().__init__("Secretkeeper", 1, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(1, 2, effects=[Effect(SpellCast(IsSecret(), BothPlayer()), ActionTag(Give([Buff(ChangeAttack(1)), Buff(ChangeHealth(1))]), SelfSelector()))])§


Source: Sense Demons NAME_END -1 ATK_END -1 DEF_END 3 COST_END -1 DUR_END Spell TYPE_END Warlock PLAYER_CLS_END NIL RACE_END Common RARITY_END Put 2 random Demons from your deck into your hand.

Target: class SenseDemons(SpellCard):§    def __init__(self):§        super().__init__("Sense Demons", 3, CHARACTER_CLASS.WARLOCK, CARD_RARITY.COMMON)§§    def use(self, player, game):§        super().use(player, game)§§        for i in range(0, 2):§            demon_card = game.random_draw(game.current_player.deck.cards, lambda c: not c.drawn and c.is_minion() and c.minion_type == MINION_TYPE.DEMON)§            if demon_card:§                demon_card.drawn = True§                player.deck.left -= 1§                if len(player.hand) < 10:§                    player.hand.append(demon_card)§                    demon_card.player = player§                    self.trigger("card_drawn", demon_card)§                else:§                    player.trigger("card_destroyed", demon_card)§            else:§                if len(player.hand) < 10:§                    player.hand.append(hearthbreaker.cards.minions.warlock.WorthlessImp())§                    player.hand[-1].player = player§                    self.trigger("card_drawn", hearthbreaker.cards.minions.warlock.WorthlessImp())§


Source: Shadowflame NAME_END -1 ATK_END -1 DEF_END 4 COST_END -1 DUR_END Spell TYPE_END Warlock PLAYER_CLS_END NIL RACE_END Rare RARITY_END Destroy a friendly minion and deal its Attack damage to all enemy minions.

Target: class Shadowflame(SpellCard):§    def __init__(self):§        super().__init__("Shadowflame", 4, CHARACTER_CLASS.WARLOCK, CARD_RARITY.RARE, target_func=hearthbreaker.targeting.find_friendly_minion_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        shadowflame_damage = self.target.calculate_attack()§        self.target.die(self)§        for minion in game.other_player.minions:§            minion.damage(player.effective_spell_damage(shadowflame_damage), self)§


Source: Shadowform NAME_END -1 ATK_END -1 DEF_END 3 COST_END -1 DUR_END Spell TYPE_END Priest PLAYER_CLS_END NIL RACE_END Epic RARITY_END Your Hero Power becomes 'Deal 2 damage'. If already in Shadowform: 3 damage.

Target: class Shadowform(SpellCard):§    def __init__(self):§        super().__init__("Shadowform", 3, CHARACTER_CLASS.PRIEST, CARD_RARITY.EPIC)§§    def use(self, player, game):§        super().use(player, game)§§        if type(player.hero.power) is not hearthbreaker.powers.MindShatter and type( player.hero.power) is not hearthbreaker.powers.MindSpike:§            player.hero.power = hearthbreaker.powers.MindSpike()§            player.hero.power.hero = player.hero§        elif type(player.hero.power) is hearthbreaker.powers.MindSpike:§            player.hero.power = hearthbreaker.powers.MindShatter()§            player.hero.power.hero = player.hero§


Source: Shadowstep NAME_END -1 ATK_END -1 DEF_END 0 COST_END -1 DUR_END Spell TYPE_END Rogue PLAYER_CLS_END NIL RACE_END Common RARITY_END Return a friendly minion to your hand. It costs (2) less.

Target: class Shadowstep(SpellCard):§    def __init__(self):§        super().__init__("Shadowstep", 0, CHARACTER_CLASS.ROGUE, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_friendly_minion_spell_target)§§    def use(self, player, game):§        super().use(player, game)§§        self.target.bounce()§        self.target.card.add_buff(Buff(ManaChange(-3)))§


Source: Shield Slam NAME_END -1 ATK_END -1 DEF_END 1 COST_END -1 DUR_END Spell TYPE_END Warrior PLAYER_CLS_END NIL RACE_END Epic RARITY_END Deal 1 damage to a minion for each Armor you have.

Target: class ShieldSlam(SpellCard):§    def __init__(self):§        super().__init__("Shield Slam", 1, CHARACTER_CLASS.WARRIOR, CARD_RARITY.EPIC, target_func=hearthbreaker.targeting.find_minion_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        self.target.damage(player.effective_spell_damage(player.hero.armor), self)§


Source: Shieldbearer NAME_END 0 ATK_END 4 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Taunt</b>

Target: class Shieldbearer(MinionCard):§    def __init__(self):§        super().__init__("Shieldbearer", 1, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(0, 4, taunt=True)§


Source: Silence NAME_END -1 ATK_END -1 DEF_END 0 COST_END -1 DUR_END Spell TYPE_END Priest PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Silence</b> a minion.

Target: class Silence(SpellCard):§    def __init__(self):§        super().__init__("Silence", 0, CHARACTER_CLASS.PRIEST, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_minion_spell_target)§§    def use(self, player, game):§        super().use(player, game)§§        self.target.silence()§


Source: Silver Hand Knight NAME_END 4 ATK_END 4 DEF_END 5 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Battlecry:</b> Summon a 2/2 Squire.

Target: class SilverHandKnight(MinionCard):§    def __init__(self):§        super().__init__("Silver Hand Knight", 5, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, battlecry=Battlecry(Summon(Squire()), PlayerSelector()))§§    def create_minion(self, player):§        return Minion(4, 4)§


Source: Silvermoon Guardian NAME_END 3 ATK_END 3 DEF_END 4 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Divine Shield</b>

Target: class SilvermoonGuardian(MinionCard):§    def __init__(self):§        super().__init__("Silvermoon Guardian", 4, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(3, 3, divine_shield=True)§


Source: Snake NAME_END 1 ATK_END 1 DEF_END 0 COST_END -1 DUR_END Minion TYPE_END Hunter PLAYER_CLS_END Beast RACE_END Common RARITY_END NIL

Target: class Snake(MinionCard):§    def __init__(self):§        super().__init__("Snake", 0, CHARACTER_CLASS.HUNTER, CARD_RARITY.COMMON, False, minion_type=MINION_TYPE.BEAST)§§    def create_minion(self, player):§        return Minion(1, 1)§


Source: Snake Trap NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Hunter PLAYER_CLS_END NIL RACE_END Epic RARITY_END <b>Secret:</b> When one of your minions is attacked, summon three 1/1 Snakes.

Target: class SnakeTrap(SecretCard):§    def __init__(self):§        super().__init__("Snake Trap", 2, CHARACTER_CLASS.HUNTER, CARD_RARITY.EPIC)§§    def activate(self, player):§        player.game.current_player.bind("character_attack", self._reveal)§§    def deactivate(self, player):§        player.game.current_player.unbind("character_attack", self._reveal)§§    def _reveal(self, attacker, target):§        if isinstance(target, Minion):§            snake = hearthbreaker.cards.minions.hunter.Snake()§            player = target.player.game.other_player§            for i in range(0, 3):§                snake.summon(player, player.game, len(player.minions))§            super().reveal()§


Source: Snipe NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Hunter PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Secret:</b> When your opponent plays a minion, deal $4 damage to it.

Target: class Snipe(SecretCard):§    def __init__(self):§        super().__init__("Snipe", 2, CHARACTER_CLASS.HUNTER, CARD_RARITY.COMMON)§§    def activate(self, player):§        player.game.current_player.bind("minion_played", self._reveal)§§    def deactivate(self, player):§        player.game.current_player.unbind("minion_played", self._reveal)§§    def _reveal(self, minion):§        minion.damage(4, None)§        super().reveal()§


Source: Sorcerer's Apprentice NAME_END 3 ATK_END 2 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Mage PLAYER_CLS_END NIL RACE_END Common RARITY_END Your spells cost (1) less.

Target: class SorcerersApprentice(MinionCard):§    def __init__(self):§        super().__init__("Sorcerer's Apprentice", 2, CHARACTER_CLASS.MAGE, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(3, 2, auras=[Aura(ManaChange(-1), CardSelector(condition=IsSpell()))])§


Source: Soul of the Forest NAME_END -1 ATK_END -1 DEF_END 4 COST_END -1 DUR_END Spell TYPE_END Druid PLAYER_CLS_END NIL RACE_END Common RARITY_END Give your minions "<b>Deathrattle:</b> Summon a 2/2 Treant."

Target: class SoulOfTheForest(SpellCard):§    def __init__(self):§        super().__init__("Soul of the Forest", 4, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON)§§    def use(self, player, game):§        super().use(player, game)§        from hearthbreaker.cards.minions.druid import Treant§        for minion in player.minions:§            minion.deathrattle.append(Deathrattle(Summon(Treant()), PlayerSelector()))§


Source: Southsea Captain NAME_END 3 ATK_END 3 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Pirate RACE_END Epic RARITY_END Your other Pirates have +1/+1.

Target: class SouthseaCaptain(MinionCard):§    def __init__(self):§        super().__init__("Southsea Captain", 3, CHARACTER_CLASS.ALL, CARD_RARITY.EPIC, minion_type=MINION_TYPE.PIRATE)§§    def create_minion(self, player):§        return Minion(3, 3, auras=[Aura(ChangeAttack(1), MinionSelector(IsType(MINION_TYPE.PIRATE))), Aura(ChangeHealth(1), MinionSelector(IsType(MINION_TYPE.PIRATE)))])§


Source: Southsea Deckhand NAME_END 2 ATK_END 1 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Pirate RACE_END Common RARITY_END Has <b>Charge</b> while you have a weapon equipped.

Target: class SouthseaDeckhand(MinionCard):§    def __init__(self):§        super().__init__("Southsea Deckhand", 1, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, minion_type=MINION_TYPE.PIRATE)§§    def create_minion(self, player):§        return Minion(2, 1, buffs=[Buff(Charge(), GreaterThan(Count(WeaponSelector()), value=0))])§


Source: Spellbender NAME_END -1 ATK_END -1 DEF_END 3 COST_END -1 DUR_END Spell TYPE_END Mage PLAYER_CLS_END NIL RACE_END Epic RARITY_END <b>Secret:</b> When an enemy casts a spell on a minion, summon a 1/3 as the new target.

Target: class Spellbender(SecretCard):§    def __init__(self):§        super().__init__("Spellbender", 3, CHARACTER_CLASS.MAGE, CARD_RARITY.EPIC)§        self.player = None§§    def _reveal(self, card, index):§        if card.is_spell() and len(self.player.minions) < 7 and card.target and card.target.is_minion():§            SpellbenderMinion().summon(self.player, self.player.game, len(self.player.minions))§            card.target = self.player.minions[-1]§            super().reveal()§§    def activate(self, player):§        player.game.current_player.bind("card_played", self._reveal)§        self.player = player§§    def deactivate(self, player):§        player.game.current_player.unbind("card_played", self._reveal)§        self.player = None§


Source: Spirit Wolf NAME_END 2 ATK_END 3 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Shaman PLAYER_CLS_END NIL RACE_END Rare RARITY_END <b>Taunt</b>

Target: class SpiritWolf(MinionCard):§    def __init__(self):§        super().__init__("Spirit Wolf", 2, CHARACTER_CLASS.SHAMAN, CARD_RARITY.RARE, False)§§    def create_minion(self, p):§        return Minion(2, 3, taunt=True)§


Source: Spiteful Smith NAME_END 4 ATK_END 6 DEF_END 5 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Enrage:</b> Your weapon has +2 Attack.

Target: class SpitefulSmith(MinionCard):§    def __init__(self):§        super().__init__("Spiteful Smith", 5, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(4, 6, enrage=[Aura(ChangeAttack(2), WeaponSelector())])§


Source: Squire NAME_END 2 ATK_END 2 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END NIL

Target: class Squire(MinionCard):§    def __init__(self):§        super().__init__("Squire", 1, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, False)§§    def create_minion(self, player):§        return Minion(2, 2)§


Source: Squirrel NAME_END 1 ATK_END 1 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Beast RACE_END Common RARITY_END NIL

Target: class Squirrel(MinionCard):§    def __init__(self):§        super().__init__("Squirrel", 1, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, False, minion_type=MINION_TYPE.BEAST)§§    def create_minion(self, player):§        return Minion(1, 1)§


Source: Stampeding Kodo NAME_END 3 ATK_END 5 DEF_END 5 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Beast RACE_END Rare RARITY_END <b>Battlecry:</b> Destroy a random enemy minion with 2 or less Attack.

Target: class StampedingKodo(MinionCard):§    def __init__(self):§        super().__init__("Stampeding Kodo", 5, CHARACTER_CLASS.ALL, CARD_RARITY.RARE, minion_type=MINION_TYPE.BEAST, battlecry=Battlecry(Kill(), MinionSelector(AttackLessThanOrEqualTo(2), EnemyPlayer(), RandomPicker())))§§    def create_minion(self, player):§        return Minion(3, 5)§


Source: Starfall NAME_END -1 ATK_END -1 DEF_END 5 COST_END -1 DUR_END Spell TYPE_END Druid PLAYER_CLS_END NIL RACE_END Rare RARITY_END <b>Choose One -</b> Deal $5 damage to a minion; or $2 damage to all enemy minions.

Target: class Starfall(SpellCard):§    def __init__(self):§        super().__init__("Starfall", 5, CHARACTER_CLASS.DRUID, CARD_RARITY.RARE)§§    def can_use(self, player, game):§        return super().can_use(player, game) and len(game.other_player.minions) > 0§§    def use(self, player, game):§        super().use(player, game)§        option = player.agent.choose_option([DamageAll(), DamageOne()], player)§        option.use(player, game)§


Source: Stormforged Axe NAME_END 2 ATK_END -1 DEF_END 2 COST_END 3 DUR_END Weapon TYPE_END Shaman PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Overload:</b> (1)

Target: class StormforgedAxe(WeaponCard):§    def __init__(self):§        super().__init__("Stormforged Axe", 2, CHARACTER_CLASS.SHAMAN, CARD_RARITY.COMMON, overload=1)§§    def create_weapon(self, player):§        return Weapon(2, 3)§


Source: Stranglethorn Tiger NAME_END 5 ATK_END 5 DEF_END 5 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Beast RACE_END Common RARITY_END <b>Stealth</b>

Target: class StranglethornTiger(MinionCard):§    def __init__(self):§        super().__init__("Stranglethorn Tiger", 5, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, minion_type=MINION_TYPE.BEAST)§§    def create_minion(self, player):§        return Minion(5, 5, stealth=True)§


Source: Sunwalker NAME_END 4 ATK_END 5 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END Taunt NL Divine Shield

Target: class Sunwalker(MinionCard):§    def __init__(self):§        super().__init__("Sunwalker", 6, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(4, 5, divine_shield=True, taunt=True)§


Source: Sword of Justice NAME_END 1 ATK_END -1 DEF_END 3 COST_END 5 DUR_END Weapon TYPE_END Paladin PLAYER_CLS_END NIL RACE_END Epic RARITY_END Whenever you summon a minion, give it +1/+1 and this loses 1 Durability.

Target: class SwordOfJustice(WeaponCard):§    def __init__(self):§        super().__init__("Sword of Justice", 3, CHARACTER_CLASS.PALADIN, CARD_RARITY.EPIC)§§    def create_weapon(self, player):§        return Weapon(1, 5, effects=[Effect(MinionSummoned(), ActionTag(Give([Buff(ChangeAttack(1)), Buff(ChangeHealth(1))]), TargetSelector())), Effect(MinionSummoned(), ActionTag(DecreaseDurability(), WeaponSelector()))])§


Source: Sylvanas Windrunner NAME_END 5 ATK_END 5 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END <b>Deathrattle:</b> Take control of a random enemy minion.

Target: class SylvanasWindrunner(MinionCard):§    def __init__(self):§        super().__init__("Sylvanas Windrunner", 6, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY)§§    def create_minion(self, player):§        return Minion(5, 5, deathrattle=Deathrattle(Steal(), MinionSelector(players=EnemyPlayer(), picker=RandomPicker())))§


Source: Tauren Warrior NAME_END 2 ATK_END 3 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END Taunt. Enrage: +3 Attack

Target: class TaurenWarrior(MinionCard):§    def __init__(self):§        super().__init__("Tauren Warrior", 3, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(2, 3, taunt=True, enrage=[Aura(ChangeAttack(3), SelfSelector())])§


Source: Temple Enforcer NAME_END 6 ATK_END 6 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Priest PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Battlecry:</b> Give a friendly minion +3 Health.

Target: class TempleEnforcer(MinionCard):§    def __init__(self):§        super().__init__("Temple Enforcer", 6, CHARACTER_CLASS.PRIEST, CARD_RARITY.COMMON, battlecry=Battlecry(Give(ChangeHealth(3)), MinionSelector(picker=UserPicker())))§§    def create_minion(self, player):§        return Minion(6, 6)§


Source: The Beast NAME_END 9 ATK_END 7 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Beast RACE_END Legendary RARITY_END <b>Deathrattle:</b> Summon a 3/3 Finkle Einhorn for your opponent.

Target: class TheBeast(MinionCard):§    def __init__(self):§        super().__init__("The Beast", 6, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, minion_type=MINION_TYPE.BEAST)§§    def create_minion(self, player):§        return Minion(9, 7, deathrattle=Deathrattle(Summon(FinkleEinhorn()), PlayerSelector(EnemyPlayer())))§


Source: The Black Knight NAME_END 4 ATK_END 5 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END Battlecry: Destroy an enemy minion with Taunt.

Target: class TheBlackKnight(MinionCard):§    def __init__(self):§        super().__init__("The Black Knight", 6, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, battlecry=Battlecry(Kill(), MinionSelector(HasStatus("taunt"), EnemyPlayer(), UserPicker())))§§    def create_minion(self, player):§        return Minion(4, 5)§


Source: Thoughtsteal NAME_END -1 ATK_END -1 DEF_END 3 COST_END -1 DUR_END Spell TYPE_END Priest PLAYER_CLS_END NIL RACE_END Common RARITY_END Copy 2 cards from your opponent's deck and put them into your hand.

Target: class Thoughtsteal(SpellCard):§    def __init__(self):§        super().__init__("Thoughtsteal", 3, CHARACTER_CLASS.PRIEST, CARD_RARITY.COMMON)§§    def use(self, player, game):§        super().use(player, game)§        for i in range(0, 2):§            new_card = game.random_draw(game.other_player.deck.cards, lambda c: not c.drawn)§            if new_card:§                new_card = copy.copy(new_card)§                new_card.drawn = True§                if len(player.hand) < 10:§                    player.hand.append(new_card)§                    new_card.player = player§                    self.trigger("card_drawn", new_card)§                else:§                    player.trigger("card_destroyed", new_card)§


Source: Tirion Fordring NAME_END 6 ATK_END 6 DEF_END 8 COST_END -1 DUR_END Minion TYPE_END Paladin PLAYER_CLS_END NIL RACE_END Legendary RARITY_END Divine Shield. Taunt. Deathrattle: Equip a 5/3 Ashbringer.

Target: class TirionFordring(MinionCard):§    def __init__(self):§        super().__init__("Tirion Fordring", 8, CHARACTER_CLASS.PALADIN, CARD_RARITY.LEGENDARY)§§    def create_minion(self, player):§        return Minion(6, 6, divine_shield=True, taunt=True, deathrattle=Deathrattle(Equip(Ashbringer()), PlayerSelector()))§


Source: Treant NAME_END 2 ATK_END 2 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Druid PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Charge</b>. At the end of the turn, destroy this minion.

Target: class Treant(MinionCard):§    def __init__(self):§        super().__init__("Treant", 1, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON)§§    def create_minion(self, _):§        return Minion(2, 2)§


Source: Treant NAME_END 2 ATK_END 2 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Druid PLAYER_CLS_END NIL RACE_END NIL RARITY_END NIL

Target: class Treant(MinionCard):§    def __init__(self):§        super().__init__("Treant", 1, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON)§§    def create_minion(self, _):§        return Minion(2, 2)§


Source: Treant NAME_END 2 ATK_END 2 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Druid PLAYER_CLS_END NIL RACE_END NIL RARITY_END <b>Taunt</b>

Target: class Treant(MinionCard):§    def __init__(self):§        super().__init__("Treant", 1, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON)§§    def create_minion(self, _):§        return Minion(2, 2)§


Source: Twilight Drake NAME_END 4 ATK_END 1 DEF_END 4 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END Rare RARITY_END <b>Battlecry:</b> Gain +1 Health for each card in your hand.

Target: class TwilightDrake(MinionCard):§    def __init__(self):§        super().__init__("Twilight Drake", 4, CHARACTER_CLASS.ALL, CARD_RARITY.RARE, minion_type=MINION_TYPE.DRAGON, battlecry=Battlecry(Give(Buff(ChangeHealth(Count(CardSelector())))), SelfSelector()))§§    def create_minion(self, player):§        return Minion(4, 1)§


Source: Twisting Nether NAME_END -1 ATK_END -1 DEF_END 8 COST_END -1 DUR_END Spell TYPE_END Warlock PLAYER_CLS_END NIL RACE_END Epic RARITY_END Destroy all minions.

Target: class TwistingNether(SpellCard):§    def __init__(self):§        super().__init__("Twisting Nether", 8, CHARACTER_CLASS.WARLOCK, CARD_RARITY.EPIC)§§    def use(self, player, game):§        super().use(player, game)§        targets = copy.copy(game.other_player.minions)§        targets.extend(game.current_player.minions)§        for minion in targets:§            minion.die(self)§


Source: Unbound Elemental NAME_END 2 ATK_END 4 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Shaman PLAYER_CLS_END NIL RACE_END Common RARITY_END Whenever you play a card with <b>Overload</b>, gain +1/+1.

Target: class UnboundElemental(MinionCard):§    def __init__(self):§        super().__init__("Unbound Elemental", 3, CHARACTER_CLASS.SHAMAN, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(2, 4, effects=[Effect(CardPlayed(HasOverload()), ActionTag(Give(ChangeAttack(1)), SelfSelector())), Effect(CardPlayed(HasOverload()), ActionTag(Give(ChangeHealth(1)), SelfSelector()))])§


Source: Unleash the Hounds NAME_END -1 ATK_END -1 DEF_END 3 COST_END -1 DUR_END Spell TYPE_END Hunter PLAYER_CLS_END NIL RACE_END Common RARITY_END For each enemy minion, summon a 1/1 Hound with <b>Charge</b>.

Target: class UnleashTheHounds(SpellCard):§    def __init__(self):§        super().__init__("Unleash the Hounds", 3, CHARACTER_CLASS.HUNTER, CARD_RARITY.COMMON)§§    def use(self, player, game):§        super().use(player, game)§§        for target in hearthbreaker.targeting.find_enemy_minion_spell_target(player.game, lambda x: True):§            hound = hearthbreaker.cards.minions.hunter.Hound()§            hound.summon(player, game, len(player.minions))§§    def can_use(self, player, game):§        return super().can_use(player, game) and len(game.other_player.minions) >= 1 and len(player.minions) < 7§


Source: Venture Co. Mercenary NAME_END 7 ATK_END 6 DEF_END 5 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END Your minions cost (3) more.

Target: class VentureCoMercenary(MinionCard):§    def __init__(self):§        super().__init__("Venture Co. Mercenary", 5, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(7, 6, auras=[Aura(ManaChange(3), CardSelector(condition=IsMinion()))])§


Source: Violet Apprentice NAME_END 1 ATK_END 1 DEF_END 0 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END NIL RARITY_END NIL

Target: class VioletApprentice(MinionCard):§    def __init__(self):§        super().__init__("Violet Apprentice", 0, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, False)§§    def create_minion(self, player):§        return Minion(1, 1)§


Source: Violet Teacher NAME_END 3 ATK_END 5 DEF_END 4 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END Whenever you cast a spell, summon a 1/1 Violet Apprentice.

Target: class VioletTeacher(MinionCard):§    def __init__(self):§        super().__init__("Violet Teacher", 4, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(3, 5, effects=[Effect(SpellCast(), ActionTag(Summon(VioletApprentice()), PlayerSelector()))])§


Source: Void Terror NAME_END 3 ATK_END 3 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Warlock PLAYER_CLS_END Demon RACE_END Rare RARITY_END <b>Battlecry:</b> Destroy the minions on either side of this minion and gain their Attack and Health.

Target: class VoidTerror(MinionCard):§    def __init__(self):§        super().__init__("Void Terror", 3, CHARACTER_CLASS.WARLOCK, CARD_RARITY.RARE, minion_type=MINION_TYPE.DEMON, battlecry=(Battlecry( Give([Buff(ChangeHealth(Attribute("health", MinionSelector(Adjacent())))), Buff(ChangeAttack(Attribute("attack", MinionSelector(Adjacent()))))]), SelfSelector()), Battlecry(Kill(), MinionSelector(Adjacent()))))§§    def create_minion(self, player):§        return Minion(3, 3)§


Source: Whelp NAME_END 1 ATK_END 1 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END NIL RARITY_END NIL

Target: class Whelp(MinionCard):§    def __init__(self):§        super().__init__("Whelp", 1, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, False, minion_type=MINION_TYPE.DRAGON)§§    def create_minion(self, player):§        return Minion(1, 1)§


Source: Whelp NAME_END 1 ATK_END 1 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END NIL RARITY_END NIL

Target: class Whelp(MinionCard):§    def __init__(self):§        super().__init__("Whelp", 1, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, False, minion_type=MINION_TYPE.DRAGON)§§    def create_minion(self, player):§        return Minion(1, 1)§


Source: Wild Pyromancer NAME_END 3 ATK_END 2 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END After you cast a spell, deal 1 damage to ALL minions.

Target: class WildPyromancer(MinionCard):§    def __init__(self):§        super().__init__("Wild Pyromancer", 2, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(3, 2, effects=[Effect(CardUsed(IsSpell()), ActionTag(Damage(1), MinionSelector(condition=None, players=BothPlayer())))])§


Source: Windfury Harpy NAME_END 4 ATK_END 5 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Windfury</b>

Target: class WindfuryHarpy(MinionCard):§    def __init__(self):§        super().__init__("Windfury Harpy", 6, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(4, 5, windfury=True)§


Source: Worthless Imp NAME_END 1 ATK_END 1 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Warlock PLAYER_CLS_END Demon RACE_END Common RARITY_END <i>You are out of demons! At least there are always imps...</i>

Target: class WorthlessImp(MinionCard):§    def __init__(self):§        super().__init__("Worthless Imp", 1, CHARACTER_CLASS.WARLOCK, CARD_RARITY.COMMON, False, MINION_TYPE.DEMON)§§    def create_minion(self, p):§        return Minion(1, 1)§


Source: Wrath NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Druid PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Choose One</b> - Deal $3 damage to a minion; or $1 damage and draw a card.

Target: class Wrath(SpellCard):§    def __init__(self):§        super().__init__("Wrath", 2, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_minion_spell_target)§§    def use(self, player, game):§        class WrathOne(ChoiceCard):§            def __init__(self):§                super().__init__("Wrath 1 Damage", 0, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON, False, target_func=hearthbreaker.targeting.find_minion_spell_target)§§            def use(self, player, game):§                target.damage(player.effective_spell_damage(1), wrath)§                player.draw()§§        class WrathThree(ChoiceCard):§            def __init__(self):§                super().__init__("Wrath 3 Damage", 0, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON, False, target_func=hearthbreaker.targeting.find_minion_spell_target)§§            def use(self, player, game):§                target.damage(player.effective_spell_damage(3), wrath)§§        super().use(player, game)§        option = game.current_player.agent.choose_option([WrathOne(), WrathThree()], player)§        target = self.target§        wrath = self§        option.use(player, game)§


Source: Young Dragonhawk NAME_END 1 ATK_END 1 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Beast RACE_END Common RARITY_END <b>Windfury</b>

Target: class YoungDragonhawk(MinionCard):§    def __init__(self):§        super().__init__("Young Dragonhawk", 1, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, minion_type=MINION_TYPE.BEAST)§§    def create_minion(self, player):§        return Minion(1, 1, windfury=True)§


Source: Young Priestess NAME_END 2 ATK_END 1 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END At the end of your turn, give another random friendly minion +1 Health.

Target: class YoungPriestess(MinionCard):§    def __init__(self):§        super().__init__("Young Priestess", 1, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(2, 1, effects=[Effect(TurnEnded(), ActionTag(Give(ChangeHealth(1)), MinionSelector(picker=RandomPicker())))])§


Source: Youthful Brewmaster NAME_END 3 ATK_END 2 DEF_END 2 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Battlecry:</b> Return a friendly minion from the battlefield to your hand.

Target: class YouthfulBrewmaster(MinionCard):§    def __init__(self):§        super().__init__("Youthful Brewmaster", 2, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, battlecry=Battlecry(Bounce(), MinionSelector(picker=UserPicker())))§§    def create_minion(self, player):§        return Minion(3, 2)§


Source: Ysera NAME_END 4 ATK_END 12 DEF_END 9 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END Legendary RARITY_END At the end of your turn, add a Dream Card to your hand.

Target: class Ysera(MinionCard):§    def __init__(self):§        super().__init__("Ysera", 9, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, minion_type=MINION_TYPE.DRAGON)§§    def create_minion(self, player):§        dream_card_list = [EmeraldDrake(), LaughingSister(), Nightmare(), YseraAwakens(), Dream()]§        return Minion(4, 12, effects=[Effect(TurnEnded(), ActionTag(AddCard(CardQuery(source=CARD_SOURCE.LIST, source_list=dream_card_list)), PlayerSelector()))])§


Source: Ysera Awakens NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Dream PLAYER_CLS_END NIL RACE_END NIL RARITY_END Deal $5 damage to all characters except Ysera.

Target: class YseraAwakens(SpellCard):§    def __init__(self):§        super().__init__("Ysera Awakens", 2, CHARACTER_CLASS.DREAM, CARD_RARITY.COMMON, False)§§    def use(self, player, game):§        super().use(player, game)§        targets = copy.copy(player.game.other_player.minions)§        targets.extend(player.game.current_player.minions)§        targets.append(player.game.other_player.hero)§        targets.append(player.game.current_player.hero)§        targets = filter(lambda m: not m.is_minion() or m.card.name != "Ysera", targets)§        for minion in targets:§            minion.damage(player.effective_spell_damage(5), self)§


Source: Axe Flinger NAME_END 2 ATK_END 5 DEF_END 4 COST_END -1 DUR_END Minion TYPE_END Warrior PLAYER_CLS_END NIL RACE_END Common RARITY_END Whenever this minion takes damage, deal 2 damage to the enemy hero.

Target: class AxeFlinger(MinionCard):§    def __init__(self):§        super().__init__("Axe Flinger", 4, CHARACTER_CLASS.WARRIOR, CARD_RARITY.COMMON)§§    def create_minion(self, player):§        return Minion(2, 5, effects=[Effect(Damaged(), ActionTag(Damage(2), HeroSelector(EnemyPlayer())))])§


Source: Blackwing Technician NAME_END 2 ATK_END 4 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Battlecry:</b> If you're holding a Dragon, gain +1/+1.

Target: class BlackwingTechnician(MinionCard):§    def __init__(self):§        super().__init__("Blackwing Technician", 3, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, battlecry=(Battlecry(Give([Buff(ChangeAttack(1)), Buff(ChangeHealth(1))]), SelfSelector(), GreaterThan(Count(CardSelector(condition=IsType(MINION_TYPE.DRAGON))), value=0))))§§    def create_minion(self, player):§        return Minion(2, 4)§


Source: Chromaggus NAME_END 6 ATK_END 8 DEF_END 8 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END Legendary RARITY_END Whenever you draw a card, put another copy into your hand.

Target: class Chromaggus(MinionCard):§    def __init__(self):§        super().__init__("Chromaggus", 8, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, minion_type=MINION_TYPE.DRAGON)§§    def create_minion(self, player):§        return Minion(6, 8, effects=[Effect(CardDrawn(), [ActionTag(AddCard(CardQuery(source=CARD_SOURCE.LAST_DRAWN, make_copy=True)), PlayerSelector())])])§


Source: Core Rager NAME_END 4 ATK_END 4 DEF_END 4 COST_END -1 DUR_END Minion TYPE_END Hunter PLAYER_CLS_END Beast RACE_END Rare RARITY_END <b>Battlecry:</b> If your hand is empty, gain +3/+3.

Target: class CoreRager(MinionCard):§    def __init__(self):§        super().__init__("Core Rager", 4, CHARACTER_CLASS.HUNTER, CARD_RARITY.RARE, minion_type=MINION_TYPE.BEAST, battlecry=(Battlecry(Give([Buff(ChangeAttack(3)), Buff(ChangeHealth(3))]), SelfSelector(), Not(GreaterThan(Count(CardSelector()), value=0)))))§§    def create_minion(self, player):§        return Minion(4, 4)§


Source: Dark Iron Skulker NAME_END 4 ATK_END 3 DEF_END 5 COST_END -1 DUR_END Minion TYPE_END Rogue PLAYER_CLS_END NIL RACE_END Rare RARITY_END <b>Battlecry:</b> Deal 2 damage to all undamaged enemy minions.

Target: class DarkIronSkulker(MinionCard):§    def __init__(self):§        super().__init__("Dark Iron Skulker", 5, CHARACTER_CLASS.ROGUE, CARD_RARITY.RARE, battlecry=Battlecry(Damage(2), MinionSelector(condition=Not(IsDamaged()), players=EnemyPlayer())))§§    def create_minion(self, player):§        return Minion(4, 3)§


Source: Demonwrath NAME_END -1 ATK_END -1 DEF_END 3 COST_END -1 DUR_END Spell TYPE_END Warlock PLAYER_CLS_END NIL RACE_END Rare RARITY_END Deal $2 damage to all non-Demon minions.

Target: class Demonwrath(SpellCard):§    def __init__(self):§        super().__init__("Demonwrath", 3, CHARACTER_CLASS.WARLOCK, CARD_RARITY.RARE)§§    def use(self, player, game):§        super().use(player, game)§        targets = copy.copy(game.other_player.minions)§        targets.extend(game.current_player.minions)§        for minion in targets:§            if minion.card.minion_type is not MINION_TYPE.DEMON:§                minion.damage(player.effective_spell_damage(2), self)§


Source: Dragon Consort NAME_END 5 ATK_END 5 DEF_END 5 COST_END -1 DUR_END Minion TYPE_END Paladin PLAYER_CLS_END Dragon RACE_END Rare RARITY_END <b>Battlecry:</b> The next Dragon you play costs (2) less.

Target: class DragonConsort(MinionCard):§    def __init__(self):§        super().__init__("Dragon Consort", 5, CHARACTER_CLASS.PALADIN, CARD_RARITY.RARE, minion_type=MINION_TYPE.DRAGON, battlecry=Battlecry(GiveAura([AuraUntil(ManaChange(-3), CardSelector(condition=IsType(MINION_TYPE.DRAGON)), CardPlayed(IsType(MINION_TYPE.DRAGON)), False)]), PlayerSelector()))§§    def create_minion(self, player):§        return Minion(5, 5)§


Source: Dragon Egg NAME_END 0 ATK_END 2 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END Whenever this minion takes damage, summon a 2/1 Whelp.

Target: class DragonEgg(MinionCard):§    def __init__(self):§        super().__init__("Dragon Egg", 1, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(0, 2, effects=[Effect(Damaged(), ActionTag(Summon(BlackWhelp()), PlayerSelector()))])§


Source: Dragon's Breath NAME_END -1 ATK_END -1 DEF_END 5 COST_END -1 DUR_END Spell TYPE_END Mage PLAYER_CLS_END NIL RACE_END Common RARITY_END Deal $4 damage. Costs (1) less for each minion that died this turn.

Target: class DragonsBreath(SpellCard):§    def __init__(self):§        super().__init__("Dragon's Breath", 5, CHARACTER_CLASS.MAGE, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_spell_target, buffs=[Buff(ManaChange(Count(DeadMinionSelector(players=BothPlayer())), -1))])§§    def use(self, player, game):§        super().use(player, game)§        self.target.damage(player.effective_spell_damage(4), self)§


Source: Druid of the Flame NAME_END 5 ATK_END 2 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Druid PLAYER_CLS_END Beast RACE_END Common RARITY_END NIL

Target: class DruidOfTheFlame(MinionCard):§    def __init__(self):§        super().__init__("Druid of the Flame", 3, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON, choices=[§            Choice(FlameCatForm(), Transform(FlameCat()), SelfSelector()),§            Choice(FlameBirdForm(), Transform(FlameBird()), SelfSelector())§        ])§§    def create_minion(self, player):§        return Minion(2, 2)§


Source: Druid of the Flame NAME_END 2 ATK_END 2 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Druid PLAYER_CLS_END NIL RACE_END Common RARITY_END <b>Choose One</b> - Transform into a 5/2 minion; or a 2/5 minion.

Target: class DruidOfTheFlame(MinionCard):§    def __init__(self):§        super().__init__("Druid of the Flame", 3, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON, choices=[§            Choice(FlameCatForm(), Transform(FlameCat()), SelfSelector()),§            Choice(FlameBirdForm(), Transform(FlameBird()), SelfSelector())§        ])§§    def create_minion(self, player):§        return Minion(2, 2)§


Source: Druid of the Flame NAME_END 2 ATK_END 5 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Druid PLAYER_CLS_END Beast RACE_END Common RARITY_END NIL

Target: class DruidOfTheFlame(MinionCard):§    def __init__(self):§        super().__init__("Druid of the Flame", 3, CHARACTER_CLASS.DRUID, CARD_RARITY.COMMON, choices=[§            Choice(FlameCatForm(), Transform(FlameCat()), SelfSelector()),§            Choice(FlameBirdForm(), Transform(FlameBird()), SelfSelector())§        ])§§    def create_minion(self, player):§        return Minion(2, 2)§


Source: Emperor Thaurissan NAME_END 5 ATK_END 5 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END At the end of your turn, reduce the Cost of cards in your hand by (1).

Target: class EmperorThaurissan(MinionCard):§    def __init__(self):§        super().__init__("Emperor Thaurissan", 6, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY)§§    def create_minion(self, player):§        return Minion(5, 5, effects=[Effect(TurnEnded(), [ActionTag(Give(Buff(ManaChange(-1))), CardSelector())])])§


Source: Fireguard Destroyer NAME_END 3 ATK_END 6 DEF_END 4 COST_END -1 DUR_END Minion TYPE_END Shaman PLAYER_CLS_END NIL RACE_END Common RARITY_END Battlecry: Gain 1-4 Attack. Overload: (1)

Target: class FireguardDestroyer(MinionCard):§    def __init__(self):§        super().__init__("Fireguard Destroyer", 4, CHARACTER_CLASS.SHAMAN, CARD_RARITY.COMMON, overload=1, battlecry=Battlecry(Give(Buff(ChangeAttack(RandomAmount(1, 4)))), SelfSelector()))§§    def create_minion(self, player):§        return Minion(3, 6)§


Source: Flamewaker NAME_END 2 ATK_END 4 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Mage PLAYER_CLS_END NIL RACE_END Rare RARITY_END After you cast a spell, deal 2 damage randomly split among all enemies.

Target: class Flamewaker(MinionCard):§    def __init__(self):§        super().__init__("Flamewaker", 3, CHARACTER_CLASS.MAGE, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(2, 4, effects=[Effect(CardUsed(IsSpell()), ActionTag(Damage(1), CharacterSelector(None, EnemyPlayer(), RandomPicker(2))))])§


Source: Gang Up NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Rogue PLAYER_CLS_END NIL RACE_END Common RARITY_END Choose a minion. Shuffle 3 copies of it into your deck.

Target: class GangUp(SpellCard):§    def __init__(self):§        super().__init__("Gang Up", 2, CHARACTER_CLASS.ROGUE, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_minion_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        for i in range(3):§            player.put_back(type(self.target.card)())§


Source: Grim Patron NAME_END 3 ATK_END 3 DEF_END 5 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Rare RARITY_END Whenever this minion survives damage, summon another Grim Patron.

Target: class GrimPatron(MinionCard):§    def __init__(self):§        super().__init__("Grim Patron", 5, CHARACTER_CLASS.ALL, CARD_RARITY.RARE)§§    def create_minion(self, player):§        return Minion(3, 3, effects=[Effect(Damaged(), [ActionTag(Summon(GrimPatron()), PlayerSelector(), GreaterThan(Attribute("health", SelfSelector()), value=0))])])§


Source: Imp Gang Boss NAME_END 2 ATK_END 4 DEF_END 3 COST_END -1 DUR_END Minion TYPE_END Warlock PLAYER_CLS_END Demon RACE_END Common RARITY_END Whenever this minion takes damage, summon a 1/1 Imp.

Target: class ImpGangBoss(MinionCard):§    def __init__(self):§        super().__init__("Imp Gang Boss", 3, CHARACTER_CLASS.WARLOCK, CARD_RARITY.COMMON, minion_type=MINION_TYPE.DEMON)§§    def create_minion(self, player):§        return Minion(2, 4, effects=[Effect(Damaged(), ActionTag(Summon(Imp()), PlayerSelector()))])§


Source: Lava Shock NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Shaman PLAYER_CLS_END NIL RACE_END Rare RARITY_END Deal $2 damage. NL Unlock your <b>Overloaded</b> Mana Crystals.

Target: class LavaShock(SpellCard):§    def __init__(self):§        super().__init__("Lava Shock", 2, CHARACTER_CLASS.SHAMAN, CARD_RARITY.RARE, target_func=hearthbreaker.targeting.find_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        self.target.damage(2, self)§        player.upcoming_overload = 0§        player.mana += player.current_overload§        player.current_overload = 0§


Source: Majordomo Executus NAME_END 9 ATK_END 7 DEF_END 9 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END <b>Deathrattle:</b> Replace your hero with Ragnaros, the Firelord.

Target: class MajordomoExecutus(MinionCard):§    def __init__(self):§        super().__init__("Majordomo Executus", 9, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY)§§    def create_minion(self, player):§        return Minion(9, 7, deathrattle=[Deathrattle(Transform(Ragnaros()), HeroSelector())])§


Source: Nefarian NAME_END 8 ATK_END 8 DEF_END 9 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END Legendary RARITY_END Battlecry: Add 2 random spells to your hand (from your opponent's class).

Target: class Nefarian(MinionCard):§    def __init__(self):§        super().__init__("Nefarian", 9, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, minion_type=MINION_TYPE.DRAGON, battlecry=Battlecry(AddCard(CardQuery(conditions=[ IsClass(Attribute("character_class", HeroSelector(EnemyPlayer()))), IsSpell() ]), 2), PlayerSelector()))§§    def create_minion(self, player):§        return Minion(8, 8)§


Source: Quick Shot NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Hunter PLAYER_CLS_END NIL RACE_END Common RARITY_END Deal $3 damage. NL If your hand is empty, draw a card.

Target: class QuickShot(SpellCard):§    def __init__(self):§        super().__init__("Quick Shot", 2, CHARACTER_CLASS.HUNTER, CARD_RARITY.COMMON, target_func=hearthbreaker.targeting.find_spell_target)§§    def use(self, player, game):§        super().use(player, game)§        self.target.damage(3, self)§        if len(player.hand) == 0:§            player.draw()§


Source: Rend Blackhand NAME_END 8 ATK_END 4 DEF_END 7 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END Legendary RARITY_END Battlecry: If you're holding a Dragon, destroy a Legendary minion.

Target: class RendBlackhand(MinionCard):§    def __init__(self):§        super().__init__("Rend Blackhand", 7, CHARACTER_CLASS.ALL, CARD_RARITY.LEGENDARY, battlecry=(Battlecry(Kill(), MinionSelector(And(MinionIsNotTarget(), IsRarity(CARD_RARITY.LEGENDARY)), BothPlayer(), UserPicker()), GreaterThan(Count(CardSelector(condition=IsType(MINION_TYPE.DRAGON))), value=0))))§§    def create_minion(self, player):§        return Minion(8, 4)§


Source: Resurrect NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Priest PLAYER_CLS_END NIL RACE_END Rare RARITY_END Summon a random friendly minion that died this game.

Target: class Resurrect(SpellCard):§    def __init__(self):§        super().__init__("Resurrect", 2, CHARACTER_CLASS.PRIEST, CARD_RARITY.RARE)§§    def use(self, player, game):§        from hearthbreaker.engine import card_lookup§        super().use(player, game)§        if len(player.graveyard) > 0 and len(player.minions) < 7:§            card_name = game.random_choice(player.graveyard)§            card = card_lookup(card_name)§            card.summon(player, game, len(player.minions))§


Source: Revenge NAME_END -1 ATK_END -1 DEF_END 2 COST_END -1 DUR_END Spell TYPE_END Warrior PLAYER_CLS_END NIL RACE_END Rare RARITY_END Deal $1 damage to all minions. If you have 12 or less Health, deal $3 damage instead.

Target: class Revenge(SpellCard):§    def __init__(self):§        super().__init__("Revenge", 2, CHARACTER_CLASS.WARRIOR, CARD_RARITY.RARE)§§    def use(self, player, game):§        super().use(player, game)§        targets = copy.copy(game.other_player.minions)§        targets.extend(game.current_player.minions)§        if player.hero.health <= 12:§            for minion in targets:§                minion.damage(player.effective_spell_damage(3), self)§        else:§            for minion in targets:§                minion.damage(player.effective_spell_damage(1), self)§


Source: Volcanic Drake NAME_END 6 ATK_END 4 DEF_END 6 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END Common RARITY_END Costs (1) less for each minion that died this turn.

Target: class VolcanicDrake(MinionCard):§    def __init__(self):§        super().__init__("Volcanic Drake", 6, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, minion_type=MINION_TYPE.DRAGON, buffs=[Buff(ManaChange(Count(DeadMinionSelector(players=BothPlayer())), -1))])§§    def create_minion(self, player):§        return Minion(6, 4)§


Source: Volcanic Lumberer NAME_END 7 ATK_END 8 DEF_END 9 COST_END -1 DUR_END Minion TYPE_END Druid PLAYER_CLS_END NIL RACE_END Rare RARITY_END <b>Taunt</b> NL Costs (1) less for each minion that died this turn.

Target: class VolcanicLumberer(MinionCard):§    def __init__(self):§        super().__init__("Volcanic Lumberer", 9, CHARACTER_CLASS.DRUID, CARD_RARITY.RARE, buffs=[Buff(ManaChange(Count(DeadMinionSelector(players=BothPlayer())), -1))])§§    def create_minion(self, player):§        return Minion(7, 8, taunt=True)§


Source: Whelp NAME_END 1 ATK_END 1 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END NIL RARITY_END NIL

Target: class Whelp(MinionCard):§    def __init__(self):§        super().__init__("Whelp", 1, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, False, minion_type=MINION_TYPE.DRAGON)§§    def create_minion(self, player):§        return Minion(1, 1)§


Source: Whelp NAME_END 1 ATK_END 1 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END NIL RACE_END NIL RARITY_END NIL

Target: class Whelp(MinionCard):§    def __init__(self):§        super().__init__("Whelp", 1, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, False, minion_type=MINION_TYPE.DRAGON)§§    def create_minion(self, player):§        return Minion(1, 1)§


Source: Whelp NAME_END 2 ATK_END 2 DEF_END 1 COST_END -1 DUR_END Minion TYPE_END Neutral PLAYER_CLS_END Dragon RACE_END NIL RARITY_END NIL

Target: class Whelp(MinionCard):§    def __init__(self):§        super().__init__("Whelp", 1, CHARACTER_CLASS.ALL, CARD_RARITY.COMMON, False, minion_type=MINION_TYPE.DRAGON)§§    def create_minion(self, player):§        return Minion(1, 1)§