GithubHelp home page GithubHelp logo

danielyule / hearthbreaker Goto Github PK

View Code? Open in Web Editor NEW
494.0 494.0 122.0 32.3 MB

A Hearthstone: Heroes of WarCraft Simulator for the purposes of Machine Learning and Data Mining

License: MIT License

Python 100.00%

hearthbreaker's People

Contributors

alexsafatli avatar anka-213 avatar bryant1410 avatar danielyule avatar imogenkinsman avatar littmus avatar mharris717 avatar pkappler avatar randomflyingtaco avatar royhp avatar tonyyyye avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hearthbreaker's Issues

Figuring out the order of aura, effects and battlecries

The first scenario:
On my board: Starving Buzzard and Timber Wolf.
I will play Ironbeak Owl, targeting the Buzzard, this is how it LOOKS like for me (I do not know how it looks like for opponent).

  1. Owl is placed on the board.
    1. Owl does not get aura buff
    2. Buzzard effect is not triggered
  2. I get to select battlecry target. I select the Buzzard
  3. Aura is applied to Owl
  4. Buzzard draw effect is triggered
  5. Battlecry is triggered, silencing the Buzzard (who still have aura buff)

This suggest the following: Auras --> Effects --> Battlecries

However...

The second scenario:
On my board: Knife Juggler
I will play Ironbeak Owl, targeting the Juggler, this is how it LOOKS like for me (I do not know how it looks like for opponent).

  1. Owl is placed on the board.
    1. Juggler effect is not triggered
  2. I get to select battlecry target. I select the Juggler
  3. Battlecry is triggered, silencing the Juggler
  4. No effect occurs from the Juggler

So this suggests the following: Battlecries --> Effects

So what's the order? Does effects and battlecries have certain hidden priorities on themselves?

add_to_board adds to the leftmost side?

In the code, we are adding minions to board at index 0, which I assume is leftmost side on the board. But I believe in most cases in-game so are minions added to the rightmost side on the board by spells/secrets.

Is index 0 leftmost side on the board?

Game hang

The game just hangs under some (unknown) condition, when using the decklist from issue #62.

Dire Wolf and Lightspawn bug

If you have a Dire Wolf next to Lightspawn so is the Lightspawn correctly still a 5/5 minion. However, if you silence the Lightspawn so does it turn into a 0/5, when it should be 1/5 because of the Dire Wolf next to it.

Cards which copy minions do not correctly copy events

The only card like this that we've done so far is Mirror Entity. However, any events that are bound in the create_minion aren't being copied over, nor should they be, as they might affect a different player if the ownership is different.

I'd like to suggest that we add some sort of framework for copying minions directly. Like we add an event called "copy" with the source minion and the new minion as parameters. This would involve going back over all the minions, and adding this in for any minions that might need it.

Does this make sense?

Jaraxxus and Secrets

Both Repentance and Snipe affect Jaraxxus when played. Currently, they will not have an effect,

Problem to record a game

Hello, firstly big thanks for your great project!
I'm interested in the ability to replay a game. So I follow your documentation and use this code:

deck1 = load_deck("example.hsdeck")
deck2 = load_deck("example.hsdeck")
game = Game([deck1, deck2], [RandomAgent(), RandomAgent()])
replay = record(game)
game.start()
replay.write("output.hsreplay")

If I put cards that are all the same for example "30 Ragnaros the Firelord" I don't have any problem but if I put "28 Ragnaros the Firelord" and "2 Goldshire Footman" I got this error:

Traceback (most recent call last):
File "test.py", line 48, in
replay.write("output.hsreplay")
File "/Users/XXX/hearthstone/hearthbreaker/hearthbreaker/replay.py", line 175, in write
writer.write(",".join([card.name for card in self.__shorten_deck(deck.cards)]))
TypeError: 'NoneType' object is not iterable

If I replace the line by this one: writer.write(",".join([card.name for card in deck.cards])) it works.

Another problem is this one:
File "test.py", line 48, in
replay.write("output.hsreplay")
File "/Users/ro0t/hearthstone/hearthbreaker/hearthbreaker/replay.py", line 206, in write
file.close()
AttributeError: 'str' object has no attribute 'close'
But I don't resolve this one at this time.

Web Interface

If somebody is willing to write an API, I'm willing to take a crack at a web interface, likely in Ember.JS

Problem with bounce (Vanish)

Deck 1: Frostwolf Grunt, Sacrificial Pact, Gelbin Mekkatorque, Corruption, Sacrificial Pact, Corruption, Mortal Coil, Frostwolf Grunt, Wolfrider, Soulfire, Succubus, Soulfire, Goldshire Footman, Mortal Coil, Dragonling Mechanic, Succubus, Dread Infernal, Razorfen Hunter, Voidwalker, Razorfen Hunter, Voidwalker, Elven Archer, Zombie Chow, Kobold Geomancer, Hellfire, Dread Infernal, Demolisher, Baron Rivendare, Booty Bay Bodyguard, Stormwind Knight

Deck 2: Fen Creeper, Shiv, Ancient Watcher, Novice Engineer, Elite Tauren Chieftain, Core Hound, Earthen Ring Farseer, Vanish, Oasis Snapjaw, Jungle Panther, Abomination, River Crocolisk, Nozdormu, Undertaker, Echoing Ooze, Echoing Ooze, Undertaker, Old Murk-Eye, Priestess of Elune, Haunted Creeper, Priestess of Elune, Haunted Creeper, Sludge Belcher, Sludge Belcher, Azure Drake, Azure Drake, Defender of Argus, Lorewalker Cho, Harvest Golem, Ogre Magi

Traceback (most recent call last):
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\uct.py", line 141, in DoMove
    self.game.play_card(self.game.current_player.hand[move[3]])
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1990, in play_card
    card.use(self.current_player, self)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\cards\spells\rogue.py", line 236, in use
    minion.bounce()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1256, in bounce
    self.remove_from_board()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1111, in remove_from_board
    self.player.minions.remove(self)
ValueError: list.remove(x): x not in list

What is even happening?

Got the title message for the first time.

Deck 1: Holy Smite, Cult Master, Holy Smite, Murloc Tidehunter, Voodoo Doctor, Nerub'ar Weblord, Wolfrider, Silverback Patriarch, Undertaker, Mind Control, Circle of Healing, Spiteful Smith, Silvermoon Guardian, Stormpike Commando, Kobold Geomancer, Argent Squire, Dragonling Mechanic, Shattered Sun Cleric, Goldshire Footman, Ironforge Rifleman, Nightblade, Ironforge Rifleman, Elven Archer, Core Hound, Archmage, Knife Juggler, Gelbin Mekkatorque, Grimscale Oracle, Cult Master, Knife Juggler

Deck 2: Mana Addict, Mana Addict, Harvest Golem, Harvest Golem, Hungry Crab, Wolfrider, Lord of the Arena, Nerub'ar Weblord, Secretkeeper, Loot Hoarder, Tinkmaster Overspark, Magma Rager, Mind Control Tech, Youthful Brewmaster, Cobalt Guardian, Maexxna, Silvermoon Guardian, Arcane Nullifier X-21, Ironfur Grizzly, Stonetusk Boar, Raid Leader, Cobalt Guardian, Spiteful Smith, Leeroy Jenkins, Blessing of Wisdom, Fen Creeper, Core Hound, Secretkeeper, Goldshire Footman, Elven Archer

(1) (1) Whelp at index 0(1) (1) Whelp at index 2

Traceback (most recent call last):
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\uct.py", line 146, in DoMove
    self.game.play_card(self.game.current_player.hand[move[3]])
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1991, in play_card
    card.use(self.current_player, self)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 904, in use
    minion.battlecry(minion)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\cards\minions\neutral.py", line 1522, in transform_random
    target.replace(minion)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1139, in replace
    raise ValueError("What is even happening?")
ValueError: What is even happening?

spell_power is confusingly named

Hearthstone calls it spell_damage, but we're calling it spell_power. This is because currently spell_damage is a method of Character which means "damage this character with a spell" I think we can eliminate the various x_damage methods and replace them with an if statement in the damage method which calls different triggers depending on the attacker. Then, we can rename spell_power to spell_damage to avoid confusion.

Hero triggers Explosive Trap secret causes a crash

As the title says, if the opponent have Explosive Trap and you attack with your hero so will Hearthbreaker crash because the hero object doesn't have the game attribute.

Deck 1: Wild Growth, Silverback Patriarch, Ironbark Protector, Mark of the Wild, Silverback Patriarch, Wild Growth, Mark of the Wild, Ogre Magi, Innervate, Innervate, Moonfire, Grimscale Oracle, Stormpike Commando, Ironforge Rifleman, Silvermoon Guardian, Sen'jin Shieldmasta, Ironfur Grizzly, Archmage, Stranglethorn Tiger, Lord of the Arena, Novice Engineer, Acidic Swamp Ooze, Stranglethorn Tiger, Ironfur Grizzly, War Golem, Cult Master, Poison Seeds, Stoneskin Gargoyle, Ironforge Rifleman, Cult Master

Deck 2: Cairne Bloodhoof, Bestial Wrath, Bomb Lobber, War Golem, Frostwolf Warlord, River Crocolisk, Deathwing, Stormpike Commando, Leper Gnome, Kobold Geomancer, The Beast, Flare, Explosive Trap, Silver Hand Knight, Shade of Naxxramas, Webspinner, Argent Commander, Misdirection, Demolisher, Ancient Brewmaster, Emperor Cobra, Elite Tauren Chieftain, Gelbin Mekkatorque, Ysera, Silverback Patriarch, Wailing Soul, Nerubian Egg, Houndmaster, Savannah Highmane, Novice Engineer

Traceback (most recent call last):
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\uct.py", line 157, in DoMove
    self.game.current_player.hero.attack()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1566, in attack
    super().attack()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 382, in attack
    self.player.trigger("attack", self, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 174, in trigger
    handler.function(*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\cards\spells\hunter.py", line 91, in _reveal
    enemies = copy.copy(minion.game.current_player.minions)
AttributeError: 'Hero' object has no attribute 'game'

Fireplace and #Hearthsim

Hi Daniel!

I recently went public with Fireplace and by the same occasion saw you mentioned me in your README :) Fireplace is much more than a CardXML processor though, it is a full-blown simulator with a very similar scope as yours.
I noticed Hearthbreaker six months ago or so before I started. I'm looking at it again today and I have to say you have made some incredible progress! I'm very impressed by the CLI, too.

I started an IRC channel on freenode.net a while back: #hearthsim. I used a more generic name as I'd like to welcome any discussion on Hearthstone internals, theorycrafting, simulation and such. I'm going to be back on tomorrow, so feel free to join. I saw you have quite an incredible community around HB :)

I'd really like to see if we can help eachother out with our projects, be it ideas, tests or actual code (I'd love to be compatible with your CLI for example). I'm currently browsing through your docs and code; if you want, feel free to do the same:

https://github.com/jleclanche/fireplace/tree/master/fireplace/cards/classic
https://github.com/jleclanche/fireplace/wiki/Home
https://github.com/jleclanche/fireplace/wiki/Events
https://github.com/jleclanche/fireplace/wiki/Card-Definitions

Let me know what you think.

Problem with bounce

Deck 1: Novice Engineer, Jungle Panther, Dragonling Mechanic, River Crocolisk, Frostwolf Warlord, Deathlord, Frostwolf Warlord, Azure Drake, Argent Squire, Chillwind Yeti, Razorfen Hunter, Elven Archer, Dalaran Mage, Nightblade, Dalaran Mage, Dread Infernal, Core Hound, Archmage, Knife Juggler, Gelbin Mekkatorque, Goldshire Footman, Cult Master, Knife Juggler, Wailing Soul, Fen Creeper, Zombie Chow, Imp Master, Unstable Ghoul, Southsea Deckhand, Spiteful Smith

Deck 2: Dread Corsair, Faceless Manipulator, Knife Juggler, Venture Co. Mercenary, Captain Greenskin, Tinkmaster Overspark, Spiteful Smith, Wisp, Nerub'ar Weblord, Illidan Stormrage, Doomsayer, Haunted Creeper, Ravenholdt Assassin, Ancient Watcher, Goldshire Footman, Deathwing, Spectral Knight, Alarm-o-Bot, Southsea Captain, Conceal, Mana Wraith, Acolyte of Pain, Frostwolf Grunt, Kel'Thuzad, Maexxna, Old Murk-Eye, Silver Hand Knight, Raging Worgen, Master of Disguise, Big Game Hunter

Traceback (most recent call last):
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\uct.py", line 112, in DoMove
    self.game._start_turn()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1927, in _start_turn
    self.current_player.trigger("turn_started")
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 179, in trigger
    handler.function(*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 337, in act
    actor.bounce()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1275, in bounce
    self.remove_from_board()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1130, in remove_from_board
    self.player.minions.remove(self)
ValueError: list.remove(x): x not in list

Bug: Secret vs Deathrattle

Come back :-) (thanks for your previous fix)
I try to produce all the time the problem but I don't success. Moreover when a launch 1000 games I got at least this traceback:

Traceback (most recent call last):
File "run_games.py", line 67, in do_stuff
game.start()
File "/Users/ro0t/hearthstone/hearthbreaker/hearthbreaker/game_objects.py", line 1890, in start
self.play_single_turn()
File "/Users/ro0t/hearthstone/hearthbreaker/hearthbreaker/game_objects.py", line 1894, in play_single_turn
self.current_player.agent.do_turn(self.current_player)
File "/Users/ro0t/hearthstone/hearthbreaker/hearthbreaker/agents/basic_agents.py", line 109, in do_turn
player.game.play_card(playable_cards[action - len(attack_minions)])
File "/Users/ro0t/hearthstone/hearthbreaker/hearthbreaker/game_objects.py", line 1994, in play_card
card.use(self.current_player, self)
File "/Users/ro0t/hearthstone/hearthbreaker/hearthbreaker/game_objects.py", line 924, in use
minion.battlecry(minion)
TypeError: 'int' object is not callable

Is that due to the new battecry system?
To reproduce the bug you can use these 2 decks:

First one)
15 Bloodfen Raptor
15 Freezing Trap

Second one)
30 Webspinner

Thanks

Freezing Trap remains in player.secrets after triggering

I was playing around with secret to try and get coverage on the last line of Misdirection when I kept running into errors. These turned out to be the result of Freezing Trap triggering and then remaining in play. Below is a case with the same Freezing Trap triggering 2 turns in a row and preventing us from playing a 2nd Freezing Trap.
def test_FreezingTrap(self):
game = generate_game_for(FreezingTrap, BluegillWarrior, SpellTestingAgent, PredictableAgentWithoutHeroPower)

    for turn in range(0, 4):
        game.play_single_turn()

    self.assertEqual(0, len(game.players[1].minions))
    self.assertEqual(4, len(game.players[0].hand))
    self.assertEqual(6, len(game.players[1].hand))
    self.assertEqual(4, game.players[1].hand[5].mana_cost(game.players[1]))
    self.assertEqual(1, len(game.players[0].secrets))
    self.assertEqual(30, game.players[0].hero.health)
    game.play_single_turn()
    self.assertEqual(5, len(game.players[0].hand))
    game.play_single_turn()
    self.assertEqual(0, len(game.current_player.minions))
    self.assertEqual(30, game.players[0].hero.health)
    self.assertEqual(7, len(game.players[1].hand))
    self.assertEqual(4, game.players[1].hand[4].mana_cost(game.players[1]))
    self.assertEqual(4, game.players[1].hand[6].mana_cost(game.players[1]))

Add a delay to triggers

Right now its impossible to do damage to many minons at a time. Instead th spells affect each minion one at a time, which will cause cards such as the frothing berserker to function incorrectly. Instead there should be a delay on trigger so that it stores events until activated.

Infinite loop

I did a quick 1 second test with my MCTS deckbuilding AI and got this.

Deck 1: Zombie Chow, Zombie Chow, Haunted Creeper, Haunted Creeper, Mad Scientist, Mad Scientist, Nerub'ar Weblord, Nerubian Egg, Nerubian Egg, Unstable Ghoul, Unstable Ghoul, Undertaker, Silverback Patriarch, Shattered Sun Cleric, Voidcaller, Hellfire, War Golem, Fen Creeper, Defender of Argus, Nightblade, Frostwolf Grunt, Murloc Raider, Defender of Argus, River Crocolisk, Boulderfist Ogre, Demolisher, Azure Drake, Undertaker, Novice Engineer, Master Swordsmith

Deck 2: Arcane Golem, Arcane Golem, Young Priestess, Young Priestess, Cairne Bloodhoof, Booty Bay Bodyguard, Booty Bay Bodyguard, Windspeaker, Windspeaker, Worgen Infiltrator, Worgen Infiltrator, Undertaker, Tinkmaster Overspark, Southsea Deckhand, Stoneskin Gargoyle, Core Hound, Totemic Might, Acolyte of Pain, Ancient Mage, Far Sight, Defender of Argus, Wolfrider, Lorewalker Cho, Faceless Manipulator, Baron Geddon, Earth Shock, Coldlight Oracle, Darkscale Healer, Secretkeeper, Earth Elemental

Traceback (most recent call last):
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\uct.py", line 150, in DoMove
    self.game.current_player.minions[move[3]].attack()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1158, in attack
    super().attack()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 375, in attack
    self.damage(target_attack, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1166, in damage
    super().damage(amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 216, in act
    target.draw()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1697, in draw
    self.hero.damage(self.fatigue, None)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1559, in damage
    super().damage(new_amount, attacker)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 461, in damage
    self.player.trigger("character_damaged", self, attacker, amount)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 171, in trigger
    handler[0](*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 359, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 215, in act
    for draw in range(0, self.amount):
RuntimeError: maximum recursion depth exceeded in comparison

Memory Leak on game copy

Copying a game results in a giant memory leak, and it is not entirely clear where the leak is coming from. Some part of the copied game still references the source game.

Mad Scientist - deathrattle crash (as Hunter)

Hello back,

When I play as hunter class with the "Mad Scientist" + secrets, I get this error:

Traceback (most recent call last):
File "run_games_XXX.py", line 67, in do_stuff
game.start()
File "/Users/XXX/hearthstone/hearthbreaker/hearthbreaker/game_objects.py", line 1766, in start
self.play_single_turn()
File "/Users/XXX/hearthstone/hearthbreaker/hearthbreaker/game_objects.py", line 1770, in play_single_turn
self.current_player.agent.do_turn(self.current_player)
File "/Users/XXX/hearthstone/hearthbreaker/hearthbreaker/agents/basic_agents.py", line 109, in do_turn
player.game.play_card(playable_cards[action - len(attack_minions)])
File "/Users/XXX/hearthstone/hearthbreaker/hearthbreaker/game_objects.py", line 1864, in play_card
card.use(self.current_player, self)
File "/Users/XXX/hearthstone/hearthbreaker/hearthbreaker/game_objects.py", line 833, in use
player.trigger("minion_played", minion)
File "/Users/XXX/hearthstone/hearthbreaker/hearthbreaker/game_objects.py", line 183, in trigger
handler.function(*args)
File "/Users/XXX/hearthstone/hearthbreaker/hearthbreaker/cards/spells/hunter.py", line 156, in _reveal
super().reveal()
File "/Users/XXX/hearthstone/hearthbreaker/hearthbreaker/game_objects.py", line 912, in reveal
self.player.trigger("secret_revealed", self)
AttributeError: 'NoneType' object has no attribute 'trigger'

Thanks

Example of deck used (you can use the deck vs the same deck to get the error):
1 Hunter's Mark
1 Flare
2 Tracking
2 Webspinner
2 Freezing Trap
1 Snipe
2 Eaglehorn Bow
2 Animal Companion
2 Kill Command
2 Houndmaster
2 Savannah Highmane
2 Leper Gnome
2 Undertaker
2 Haunted Creeper
2 Loot Hoarder
2 Mad Scientist
1 The Black Knight

Problem with bounce (with Alarm-o-Bot?)

Got this error when playing around with my MCTS AI fork. It needs further investigation if it really is a problem or if it's just my own fault somewhere.

  • I don't know exactly what card it is. All I know is that it's either a neutral, mage or rogue card.
  • It's triggered in "turn_started", and the only card I know of that returns to hand on turn_started is Headcrack, so that's my best guess on card.

EDIT:

  • It can't be Headcrack, since the error clearly says minion.
  • The error code states SwapWithHand. Alarm-o-Bot uses this!
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1848, in _start_turn
    self.current_player.trigger("turn_started")
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 183, in trigger
    handler.function(*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 351, in _find_target
    self.action.act(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 640, in act
    actor.bounce()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1218, in bounce
    self.remove_from_board()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1081, in remove_from_board
    self.game.remove_minion(self, self.player)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1931, in remove_minion
    player.minions.remove(minion)
ValueError: list.remove(x): x not in list

Polymorph - IndexError: list assignment index out of range

Deck 1: Arcane Intellect, Arcane Missiles, Bluegill Warrior, Murloc Tidehunter, Elven Archer, Elven Archer, Mirror Image, Arcane Missiles, Mirror Image, Bluegill Warrior, Arcane Explosion, Arcane Explosion, Frostbolt, Polymorph, Frostbolt, Kobold Geomancer, Arcane Intellect, Sen'jin Shieldmasta, Ogre Magi, Deathlord, Stonetusk Boar, Argent Squire, Haunted Creeper, Frost Elemental, Stormwind Champion, Ironfur Grizzly, Kobold Geomancer, Gelbin Mekkatorque, Silverback Patriarch, Sorcerer's Apprentice

Deck 2: Starfire, Kobold Geomancer, Blingtron 3000, Windfury Harpy, Blood Knight, Spectral Knight, Claw, Baron Rivendare, Stranglethorn Tiger, Razorfen Hunter, Mark of Nature, Echoing Ooze, Ironbeak Owl, Frostwolf Warlord, Frostwolf Warlord, Dark Iron Dwarf, Dark Iron Dwarf, Mind Control Tech, Piloted Shredder, Archmage, Spectral Knight, Loatheb, Mind Control Tech, Deathlord, Ancient of War, Magma Rager, Elite Tauren Chieftain, Stormwind Champion, Young Priestess, Ancient Brewmaster

Traceback (most recent call last):
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\uct.py", line 165, in DoMove
    self.game.play_card(self.game.current_player.hand[move[3]])
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 2009, in play_card
    card.use(self.current_player, self)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\cards\spells\mage.py", line 280, in use
    self.target.replace(minion)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1165, in replace
    self.player.minions[self.index] = new_minion
IndexError: list assignment index out of range

Minion attack, death, ValueError: list.remove(x): x not in list

I'm poking around in my MCTS fork and tried to add minion summoning index so it doesn't always pick index 0. After that so did I get the error you will see below. Of course, it could be that I did something wrong in my implementation of selecting index, but I don't think so.

Deck 1: Silverback Patriarch, Shattered Sun Cleric, Gelbin Mekkatorque, Water Elemental, War Golem, Azure Drake, Cult Master, Nightblade, Frostwolf Grunt, Ethereal Arcanist, Chillwind Yeti, Razorfen Hunter, Elven Archer, Dalaran Mage, Gurubashi Berserker, Dalaran Mage, Flamestrike, Reckless Rocketeer, Stormpike Commando, Faerie Dragon, Stranglethorn Tiger, Goldshire Footman, Questing Adventurer, Faerie Dragon, Sludge Belcher, Silvermoon Guardian, Duplicate, Demolisher, Dancing Swords, Wisp

Deck 2: Malygos, Questing Adventurer, Acidic Swamp Ooze, Temple Enforcer, Harvest Golem, Dark Iron Dwarf, Pint-Sized Summoner, Southsea Deckhand, Mindgames, Sen'jin Shieldmasta, Ancient Watcher, Holy Fire, Harvest Golem, Shadow Word: Death, Power Word: Shield, Ironfur Grizzly, Sea Giant, Silvermoon Guardian, Leper Gnome, Booty Bay Bodyguard, Mass Dispel, Alarm-o-Bot, Harrison Jones, Pint-Sized Summoner, Sunwalker, Shadow Word: Death, Shadow Madness, Baron Rivendare, Gnomish Inventor, Emperor Cobra

Traceback (most recent call last):
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\uct.py", line 148, in DoMove
    self.game.current_player.minions[move[3]].attack()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1176, in attack
    super().attack()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 392, in attack
    self.player.game.check_delayed()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1864, in check_delayed
    minion.activate_delayed()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 446, in activate_delayed
    self.trigger(delayed['event'], *delayed['args'])
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 174, in trigger
    handler.function(*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1202, in delayed_death
    self.silence()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1211, in silence
    super().silence()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 632, in silence
    aura.unapply()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 71, in unapply
    super().unapply()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\base.py", line 42, in unapply
    self.action.unact(self.target, target)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\tags\action.py", line 779, in unact
    target.remove_from_board()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1141, in remove_from_board
    self.game.remove_minion(self, self.player)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 2015, in remove_minion
    player.minions.remove(minion)
ValueError: list.remove(x): x not in list

Implemented Malygos, Dalaran Mage, Ogre Magi, Azure Drake, and Archmage

Fairly mundane stuff, just imitating other minions to apply the existing mechanics to more cards. Did not write tests because there were no new mechanics implemented. Is this useful at all or should I not bother with more? Changes are on my fork, I don't know that much about GitHub and I don't see any way to message you guys other than creating an issue.

Secret reveal not in list

My MCTS AI fork continues to find errors, here's the latest one between a mage and a paladin. I don't know the specific decks they were using (I randomize the decks). I need to find a way to print out the card for better error logs, or save a replay if it crash.

Traceback (most recent call last):
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\uct.py", line 415, in <module>
    UCTPlayGame()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\uct.py", line 402, in UCTPlayGame
    m = UCT(rootstate = state, seconds = 320, verbose = False)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\uct.py", line 377, in UCT
    state.DoMove(random.choice(state.GetMoves()))
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\uct.py", line 122, in DoMove
    self.game.current_player.minions[move[3]].attack()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1170, in attack
    super().attack()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 387, in attack
    self.player.game.check_delayed()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1851, in check_delayed
    minion.activate_delayed()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 440, in activate_delayed
    self.trigger(delayed['event'], *delayed['args'])
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 174, in trigger
    handler.function(*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1197, in delayed_death
    self.player.trigger("minion_died", self, by)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 174, in trigger
    handler.function(*args)
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\cards\spells\paladin.py", line 269, in _reveal
    super().reveal()
  File "C:\Users\Ragowit\Documents\GitHub\mcts\hearthbreaker\hearthbreaker\game_objects.py", line 1008, in reveal
    self.player.secrets.remove(self)
ValueError: list.remove(x): x not in list

Implement Weapons

Weapons are not spells, and not minions, but they can have battlecries. Implement a property for weapons in the player object

No Coin?

Seems like something pretty obvious but I don't see The Coin anywhere in our simulator.
Where would it go? Just in game_objects under the initialization for class Game?

Deathlord's deathrattle and no minion in opponent's deck

If there's no minion in opponent's deck and Deathlord's deathrattle is triggered so will the application error out.

Traceback (most recent call last):
  File "hearthstone-simulator\tests\card_tests\neutral_tests.py", line 2540, in test_Deathlord
    game.check_delayed()
  File "hearthstone-simulator\hearthbreaker\game_objects.py", line 1721, in check_delayed
    minion.activate_delayed()
  File "hearthstone-simulator\hearthbreaker\game_objects.py", line 374, in activate_delayed
    self.trigger(delayed['event'], *delayed['args'])
  File "hearthstone-simulator\hearthbreaker\game_objects.py", line 176, in trigger
    handler.function(*args)
  File "hearthstone-simulator\hearthbreaker\game_objects.py", line 1091, in delayed_death
    rattle.deathrattle(self)
  File "hearthstone-simulator\hearthbreaker\tags\base.py", line 354, in deathrattle
    self.action.act(target, t)
  File "hearthstone-simulator\hearthbreaker\tags\action.py", line 222, in act
    card.summon(target, target.game, index)
AttributeError: 'NoneType' object has no attribute 'summon'

Fix freezing mechanic

Currently, characters which freeze themselves on a turn will be unfrozen the next turn. Add a flag: frozen_this_turn

Crash when trying to duplicate echoing ooze

I suspect this is related to polymorph or some such, but more investigation is required. The index of a minion is off when an ooze is attemped to be duplicated at the end of the turn.

Traceback (most recent call last):
File "C:/Users/Daniel/PycharmProjects/hssim/run_games.py", line 56, in
do_stuff()
File "C:/Users/Daniel/PycharmProjects/hssim/run_games.py", line 53, in do_stuff
print(timeit.timeit(play_game, 'gc.enable()', number=1000))
File "C:\Python33\lib\timeit.py", line 225, in timeit
return Timer(stmt, setup, timer).timeit(number)
File "C:\Python33\lib\timeit.py", line 190, in timeit
timing = self.inner(it, self.timer)
File "C:\Python33\lib\timeit.py", line 95, in inner
_func()
File "C:/Users/Daniel/PycharmProjects/hssim/run_games.py", line 42, in play_game
raise e
File "C:/Users/Daniel/PycharmProjects/hssim/run_games.py", line 39, in play_game
new_game.start()
File "C:\Users\Daniel\PycharmProjects\hssim\hearthbreaker\game_objects.py", line 1888, in start
self.play_single_turn()
File "C:\Users\Daniel\PycharmProjects\hssim\hearthbreaker\game_objects.py", line 1893, in play_single_turn
self._end_turn()
File "C:\Users\Daniel\PycharmProjects\hssim\hearthbreaker\game_objects.py", line 1925, in _end_turn
self.current_player.trigger("turn_ended")
File "C:\Users\Daniel\PycharmProjects\hssim\hearthbreaker\game_objects.py", line 179, in trigger
handler.function(*args)
File "C:\Users\Daniel\PycharmProjects\hssim\hearthbreaker\tags\base.py", line 363, in _find_target
self.action.act(self.target, target)
File "C:\Users\Daniel\PycharmProjects\hssim\hearthbreaker\tags\action.py", line 432, in act
minion = self.minion.resolve(target.game)
File "C:\Users\Daniel\PycharmProjects\hssim\hearthbreaker\proxies.py", line 34, in resolve
char = game.players[0].minions[self.minion_ref]
IndexError: list index out of range

Confused about Agent#choose_target

This is not a real issue, apologies for polluting the project issues. Please let me know if there is a better place for this.

Let me be clear that my underlying assumption is that I just don't understand the code well enough yet, not that there's a problem with the code.

I'm curious why Agent#choose_target has the method signature it does. I would imagine it should take an attacker parameter, in addition to a list of targets.

I assume it was written this way because it was easiest

  • The existing AI agents are picking a random (or always the first) target, so there's no need to know the attacker.
  • The human agent just picked the attacker and sees it on the screen. There's no need for the method to know the attacker, since it's not deciding anything.

When envisioning writing actual AI agents, having the attacker in the method signature would make things much easier, at least as far as I can see. I'm picturing calculating all the attacks (and the order) at once, then calling attack on each in turn. I could certainly write an agent that did this with the current method signature, but adding the attacker seems cleaner.

I'm happy to make a PR with this change if you approve.

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.