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
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
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 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
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
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
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
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
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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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