Beispiel #1
0
    def create_minion(self, player):
        def draw_card():
            player.draw()

        minion = Minion(0, 3)
        player.bind("turn_ended", draw_card)
        minion.bind_once("silenced", lambda: player.unbind("turn_ended", draw_card))
        return minion
    def create_minion(self, player):
        def draw_card():
            player.draw()

        minion = Minion(1, 3)
        player.game.bind("minion_healed", draw_card)
        minion.bind_once("silenced", lambda: player.game.unbind("minion_healed", draw_card))
        return minion
Beispiel #3
0
    def create_minion(self, player):
        def increase_attack(card):
            minion.change_attack(1)

        minion = Minion(1, 3)
        player.bind("spell_cast", increase_attack)
        minion.bind_once("silenced", lambda: player.unbind("spell_cast", increase_attack))
        return minion
    def create_minion(self, player):
        def gain_one_attack(m):
            minion.change_attack(1)

        minion = Minion(2, 4)
        player.game.bind("minion_damaged", gain_one_attack)
        minion.bind_once("silenced", lambda: player.game.unbind("minion_damaged", gain_one_attack))
        return minion
Beispiel #5
0
    def create_minion(self, player):
        def draw_card():
            player.draw()

        minion = Minion(0, 3)
        player.bind("turn_ended", draw_card)
        minion.bind_once("silenced",
                         lambda: player.unbind("turn_ended", draw_card))
        return minion
Beispiel #6
0
    def create_minion(self, player):
        def buff_minion():
            minion.increase_health(1)
            minion.change_attack(1)

        minion = Minion(2, 4)
        player.bind("overloaded", buff_minion)
        minion.bind_once("silenced", lambda: player.unbind("overloaded", buff_minion))
        return minion
Beispiel #7
0
    def create_minion(self, player):
        def poisonous(amount, target):
            if type(target) is Minion:
                target.die(self)

        minion = Minion(1, 1, stealth=True)
        minion.bind("did_damage", poisonous)
        minion.bind_once("silenced", lambda: minion.unbind("did_damage", poisonous))
        return minion
    def create_minion(self, player):
        def gain_one_armor(minion):
            if minion.player is player:
                player.hero.increase_armor(1)

        minion = Minion(1, 4)
        player.game.bind("minion_damaged", gain_one_armor)
        minion.bind_once("silenced", lambda: player.game.unbind("minion_damaged", gain_one_armor))
        return minion
Beispiel #9
0
    def create_minion(self, player):
        def draw_card():
            player.draw()

        minion = Minion(1, 3)
        player.game.bind("minion_healed", draw_card)
        minion.bind_once(
            "silenced", lambda: player.game.unbind("minion_healed", draw_card))
        return minion
Beispiel #10
0
    def create_minion(self, player):
        def add_fireball(c):
            if len(player.hand) < 10:
                player.hand.append(hearthbreaker.cards.Fireball())

        minion = Minion(5, 7)
        player.bind("spell_cast", add_fireball)
        minion.bind_once("silenced", lambda: player.unbind("spell_cast", add_fireball))
        return minion
Beispiel #11
0
    def create_minion(self, player):
        def buff_minion():
            minion.increase_health(1)
            minion.change_attack(1)

        minion = Minion(2, 4)
        player.bind("overloaded", buff_minion)
        minion.bind_once("silenced",
                         lambda: player.unbind("overloaded", buff_minion))
        return minion
Beispiel #12
0
    def create_minion(self, player):
        def silence():
            player.heal_multiplier //= 2
            player.spell_multiplier //= 2

        minion = Minion(7, 7)
        minion.bind_once("silenced", silence)
        player.heal_multiplier *= 2
        player.spell_multiplier *= 2
        return minion
Beispiel #13
0
    def create_minion(self, player):
        def gain_one_attack(m):
            minion.change_attack(1)

        minion = Minion(2, 4)
        player.game.bind("minion_damaged", gain_one_attack)
        minion.bind_once(
            "silenced",
            lambda: player.game.unbind("minion_damaged", gain_one_attack))
        return minion
    def create_minion(self, player):
        def silence():
            player.heal_multiplier //= 2
            player.spell_multiplier //= 2

        minion = Minion(7, 7)
        minion.bind_once("silenced", silence)
        player.heal_multiplier *= 2
        player.spell_multiplier *= 2
        return minion
    def create_minion(self, player):
        def heal_damaged_friendly_character():
            targets = hearthbreaker.targeting.find_friendly_spell_target(
                player.game, lambda character: character.health != character.calculate_max_health())
            if len(targets) != 0:
                player.game.random_choice(targets).heal(player.effective_heal_power(3), minion)

        minion = Minion(0, 5)
        player.bind("turn_started", heal_damaged_friendly_character)
        minion.bind_once("silenced", lambda: player.unbind("turn_started", heal_damaged_friendly_character))
        return minion
Beispiel #16
0
    def create_minion(self, player):
        def gain_one_armor(minion):
            if minion.player is player:
                player.hero.increase_armor(1)

        minion = Minion(1, 4)
        player.game.bind("minion_damaged", gain_one_armor)
        minion.bind_once(
            "silenced",
            lambda: player.game.unbind("minion_damaged", gain_one_armor))
        return minion
Beispiel #17
0
    def create_minion(self, player):
        class Filter:
            def __init__(self):
                self.amount = 1
                self.filter = lambda c: c.is_spell()
                self.min = 0

        mana_filter = Filter()
        minion = Minion(3, 2)
        minion.bind_once("silenced", lambda: player.mana_filters.remove(mana_filter))
        player.mana_filters.append(mana_filter)
        return minion
    def create_minion(self, player):
        def attack_equal_to_health():
            return minion.health

        def silence():
            minion.calculate_attack = old_calculate

        minion = Minion(0, 5)
        old_calculate = minion.calculate_attack
        minion.calculate_attack = attack_equal_to_health
        minion.bind_once("silenced", silence)
        return minion
Beispiel #19
0
    def create_minion(self, player):
        class Filter:
            def __init__(self):
                self.amount = 2
                self.filter = lambda c: isinstance(c, MinionCard)
                self.min = 1

        mana_filter = Filter()
        minion = Minion(0, 4)
        minion.bind_once("silenced", lambda: player.mana_filters.remove(mana_filter))
        player.mana_filters.append(mana_filter)
        return minion
Beispiel #20
0
    def create_minion(self, player):
        def attack_equal_to_health():
            return minion.health

        def silence():
            minion.calculate_attack = old_calculate

        minion = Minion(0, 5)
        old_calculate = minion.calculate_attack
        minion.calculate_attack = attack_equal_to_health
        minion.bind_once("silenced", silence)
        return minion
Beispiel #21
0
    def create_minion(self, player):
        def increase_stats():
            if len(player.secrets) > 0:
                minion.change_attack(2)
                minion.increase_health(2)

        def silence():
            player.unbind("turn_ended", increase_stats)

        minion = Minion(3, 3)
        player.bind("turn_ended", increase_stats)
        minion.bind_once("silenced", silence)
        return minion
Beispiel #22
0
    def create_minion(self, player):
        def give_charge(m):
            if m is not minion and m.calculate_attack() <= 3:
                m.charge = True
                m.exhausted = False

        def silence():
            player.unbind("minion_placed", give_charge)

        minion = Minion(2, 3)
        player.bind("minion_placed", give_charge)
        minion.bind_once("silenced", silence)
        return minion
Beispiel #23
0
    def create_minion(self, player):
        class Filter:
            def __init__(self):
                self.amount = 2
                self.filter = lambda c: isinstance(c, MinionCard)
                self.min = 1

        mana_filter = Filter()
        minion = Minion(0, 4)
        minion.bind_once("silenced",
                         lambda: player.mana_filters.remove(mana_filter))
        player.mana_filters.append(mana_filter)
        return minion
Beispiel #24
0
    def create_minion(self, player):
        def buff_ally_health():
            targets = copy.copy(player.game.current_player.minions)
            targets.remove(minion)
            if len(targets) > 0:
                target = targets[player.game.random(0, len(targets) - 1)]
                target.increase_health(1)

        minion = Minion(0, 1, MINION_TYPE.DEMON)
        minion.stealth = True
        player.bind("turn_ended", buff_ally_health)
        minion.bind_once("silenced", lambda: player.unbind("turn_ended", buff_ally_health))
        return minion
Beispiel #25
0
    def create_minion(self, player):
        def give_charge(m):
            if m is not minion and m.calculate_attack() <= 3:
                m.charge = True
                m.exhausted = False

        def silence():
            player.unbind("minion_placed", give_charge)

        minion = Minion(2, 3)
        player.bind("minion_placed", give_charge)
        minion.bind_once("silenced", silence)
        return minion
Beispiel #26
0
    def create_minion(self, player):
        def silence():
            player.heal_does_damage = False

            # If another Auchenai Soulpriest is alive and not silenced, keep
            # heal_does_damage as True
            for m in player.minions:
                if m.card.name == "Auchenai Soulpriest" and not m.silenced and m is not minion:
                    player.heal_does_damage = True

        minion = Minion(3, 5)
        minion.bind_once("silenced", silence)
        player.heal_does_damage = True
        return minion
Beispiel #27
0
    def create_minion(self, player):
        def buff_ally_health():
            targets = copy.copy(player.game.current_player.minions)
            targets.remove(minion)
            if len(targets) > 0:
                target = targets[player.game.random(0, len(targets) - 1)]
                target.increase_health(1)

        minion = Minion(0, 1)
        minion.stealth = True
        player.bind("turn_ended", buff_ally_health)
        minion.bind_once("silenced",
                         lambda: player.unbind("turn_ended", buff_ally_health))
        return minion
Beispiel #28
0
    def create_minion(self, player):

        # These are basically placeholders to give the agent something to
        # choose
        class IncreaseStats(Card):
            def __init__(self):
                super().__init__("Give your other minions +2/+2 and taunt", 0,
                                 CHARACTER_CLASS.DRUID, CARD_RARITY.SPECIAL)

            def use(self, player, game):
                for minion in player.minions:
                    if minion is not cenarius:
                        minion.change_attack(2)
                        minion.increase_health(2)
                        minion.taunt = True

            def invoke(self, minion, index):
                self.use(minion.player, minion.game)

        class SummonTreants(Card):
            def __init__(self):
                super().__init__("Summon two 2/2 Treants with taunt", 0,
                                 CHARACTER_CLASS.DRUID, CARD_RARITY.SPECIAL)

            def use(self, player, game):
                class Treant(MinionCard):
                    def __init__(self):
                        super().__init__("Treant", 1, CHARACTER_CLASS.DRUID,
                                         CARD_RARITY.COMMON)

                    def create_minion(self, p):
                        minion = Minion(2, 2, MINION_TYPE.NONE)
                        minion.taunt = True
                        return minion

                ltreant = Treant()
                ltreant.summon(player, game, cenarius.index)
                rtreant = Treant()
                rtreant.summon(player, game, cenarius.index + 1)

            def invoke(self, minion, index):
                self.use(minion.player, minion.game)

        option = player.agent.choose_option(IncreaseStats(), SummonTreants())
        cenarius = Minion(5, 8)
        cenarius.bind_once("added_to_board", option.invoke)
        return cenarius
Beispiel #29
0
    def create_minion(self, player):

        # These are basically placeholders to give the agent something to
        # choose
        class IncreaseStats(Card):
            def __init__(self):
                super().__init__("Give your other minions +2/+2 and taunt", 0,
                                 CHARACTER_CLASS.DRUID, CARD_RARITY.SPECIAL)

            def use(self, player, game):
                for minion in player.minions:
                    if minion is not cenarius:
                        minion.change_attack(2)
                        minion.increase_health(2)
                        minion.taunt = True

            def invoke(self, minion, index):
                self.use(minion.player, minion.game)

        class SummonTreants(Card):
            def __init__(self):
                super().__init__("Summon two 2/2 Treants with taunt", 0,
                                 CHARACTER_CLASS.DRUID, CARD_RARITY.SPECIAL)

            def use(self, player, game):
                class Treant(MinionCard):
                    def __init__(self):
                        super().__init__("Treant", 1, CHARACTER_CLASS.DRUID,
                                         CARD_RARITY.COMMON)

                    def create_minion(self, p):
                        minion = Minion(2, 2, MINION_TYPE.NONE)
                        minion.taunt = True
                        return minion
                ltreant = Treant()
                ltreant.summon(player, game, cenarius.index)
                rtreant = Treant()
                rtreant.summon(player, game, cenarius.index + 1)

            def invoke(self, minion, index):
                self.use(minion.player, minion.game)

        option = player.agent.choose_option(IncreaseStats(), SummonTreants())
        cenarius = Minion(5, 8)
        cenarius.bind_once("added_to_board", option.invoke)
        return cenarius
Beispiel #30
0
    def create_minion(self, player):
        def heal_damaged_friendly_character():
            targets = hearthbreaker.targeting.find_friendly_spell_target(
                player.game, lambda character: character.health != character.
                calculate_max_health())
            if len(targets) != 0:
                targets[player.game.random(0,
                                           len(targets) - 1)].heal(
                                               player.effective_heal_power(3),
                                               minion)

        minion = Minion(0, 5)
        player.bind("turn_started", heal_damaged_friendly_character)
        minion.bind_once(
            "silenced", lambda: player.unbind("turn_started",
                                              heal_damaged_friendly_character))
        return minion