module Solutions.RavnicaAllegiance5 where
import Dovin.V2
tapWithFreyalise :: ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tapWithFreyalise ManaString
mana ManaString
card = do
CardMatcher
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
validate CardMatcher
matchInPlay ManaString
"Song of Freyalise"
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tapForMana ManaString
mana ManaString
card
solution :: GameMonad ()
solution :: ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
solution = do
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Initial state" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
Player
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
as Player
Opponent (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ Int
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
setLife Int
16
Player
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
as Player
Active (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ Int
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
setLife Int
17
Location
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
withLocation Location
Graveyard (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addLand ManaString
"Forest"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addLand ManaString
"Swamp"
Location
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
withLocation Location
Hand (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addEnchantment ManaString
"Song of Freyalise"
(Int, Int)
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addCreature (Int
1, Int
3) ManaString
"Wildgrowth Walker"
(Int, Int)
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addCreature (Int
2, Int
1) ManaString
"Merfolk Branchwalker"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addSorcery ManaString
"Enter the Unknown"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addInstant ManaString
"Rallying Roar"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addInstant ManaString
"Depths of Desire"
Location
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
withLocation Location
Play (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addEnchantment ManaString
"Fall of the Thran"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addEnchantment ManaString
"Path of Discovery"
(Int, Int)
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addCreature (Int
3, Int
3) ManaString
"Famished Paladin"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
withAttribute ManaString
vigilance (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
(Int, Int)
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addCreature (Int
4, Int
4) ManaString
"Vona, Butcher of Magan"
(Int, Int)
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addCreature (Int
2, Int
3) ManaString
"Tenth District Veteran"
(Int, Int)
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addCreature (Int
2, Int
5) ManaString
"Cacophodon"
Int
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addPlaneswalker Int
3 ManaString
"Jace, Ingenious Mind-Mage"
Player
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
as Player
Opponent (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
Location
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
withLocation Location
Play (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
(Int, Int)
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addCreature (Int
3, Int
4) ManaString
"Temple Altisaur"
(Int, Int)
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addCreature (Int
2, Int
2) ManaString
"Everdawn Champion"
(Int, Int)
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addCreature (Int
2, Int
4) ManaString
"Baird, Steward of Argive"
(Int, Int)
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addCreature (Int
2, Int
1) ManaString
"Dauntless Bodyguard"
(Int, Int)
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addCreature (Int
3, Int
5) ManaString
"Imperial Ceratops"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Return lands from Fall of Thran trigger" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"" ManaString
"Fall of the Thran" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
Location
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
moveTo Location
Play ManaString
"Forest"
Location
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
moveTo Location
Play ManaString
"Swamp"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Cast Song of Freyalise" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tapForMana ManaString
"G" ManaString
"Forest"
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tapForMana ManaString
"B" ManaString
"Swamp"
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
cast ManaString
"1G" ManaString
"Song of Freyalise" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Use Vona to destroy Bodyguard" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
activate ManaString
"Destroy" ManaString
"" ManaString
"Vona, Butcher of Magan"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tap ManaString
"Vona, Butcher of Magan"
Int
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
loseLife Int
7
ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
target ManaString
"Dauntless Bodyguard"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
destroy ManaString
"Dauntless Bodyguard"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Cast Depths on Altisaur using creatures" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
CardMatcher
-> (ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forCards (Player -> CardMatcher
matchController Player
Active CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> CardMatcher
matchInPlay CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> ManaString -> CardMatcher
matchAttribute ManaString
creature CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> ManaString -> CardMatcher
missingAttribute ManaString
tapped CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> ManaString -> CardMatcher
missingAttribute ManaString
summoned) (ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tapWithFreyalise ManaString
"U")
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
cast ManaString
"2U" ManaString
"Depths of Desire" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
Player
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
as Player
Opponent (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$
Location
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
moveTo Location
Hand ManaString
"Temple Altisaur"
Location
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
withLocation Location
Play (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
withAttribute ManaString
token (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addArtifact ManaString
"Treasure"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Untap with Jace" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> Int
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
activatePlaneswalker ManaString
"" Int
1 ManaString
"Jace, Ingenious Mind-Mage" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
CardMatcher
-> (ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forCards (Player -> CardMatcher
matchController Player
Active CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> CardMatcher
matchInPlay CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> [ManaString] -> CardMatcher
matchAttributes [ManaString
creature, ManaString
tapped]) ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
untap
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Cast Wildgrowth by tapping creaturs" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tapWithFreyalise ManaString
"G" ManaString
"Famished Paladin"
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tapWithFreyalise ManaString
"G" ManaString
"Tenth District Veteran"
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
cast ManaString
"1G" ManaString
"Wildgrowth Walker" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"Explore" ManaString
"Path of Discovery" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ASetter Card Card Int Int
-> (Int -> Int)
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b.
ManaString
-> ASetter Card Card a b
-> (a -> b)
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
modifyCardDeprecated ManaString
"Wildgrowth Walker" ASetter Card Card Int Int
Lens' Card Int
cardPlusOneCounters (Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"Gain life" ManaString
"Wildgrowth Walker" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
Int
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
gainLife Int
3
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"Untap" ManaString
"Famished Paladin" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
untap ManaString
"Famished Paladin"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Cast Branchwalker, floating mana from paladin untaps" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tapWithFreyalise ManaString
"G" ManaString
"Famished Paladin"
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tapWithFreyalise ManaString
"G" ManaString
"Cacophodon"
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
cast ManaString
"1G" ManaString
"Merfolk Branchwalker" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"Explore Path" ManaString
"Path of Discovery"
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"Explore Brachwalker" ManaString
"Merfolk Branchwalker"
ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ASetter Card Card Int Int
-> (Int -> Int)
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b.
ManaString
-> ASetter Card Card a b
-> (a -> b)
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
modifyCardDeprecated ManaString
"Merfolk Branchwalker" ASetter Card Card Int Int
Lens' Card Int
cardPlusOneCounters (Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"Gain life" ManaString
"Wildgrowth Walker" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
Int
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
gainLife Int
3
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"Untap" ManaString
"Famished Paladin" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
untap ManaString
"Famished Paladin"
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tapWithFreyalise ManaString
"G" ManaString
"Famished Paladin"
ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ASetter Card Card Int Int
-> (Int -> Int)
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b.
ManaString
-> ASetter Card Card a b
-> (a -> b)
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
modifyCardDeprecated ManaString
"Merfolk Branchwalker" ASetter Card Card Int Int
Lens' Card Int
cardPlusOneCounters (Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"Gain life" ManaString
"Wildgrowth Walker" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
Int
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
gainLife Int
3
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"Untap" ManaString
"Famished Paladin" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
untap ManaString
"Famished Paladin"
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tapWithFreyalise ManaString
"G" ManaString
"Famished Paladin"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Enter the Unknown on Tenth District Veteran" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
cast ManaString
"G" ManaString
"Enter the Unknown" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
target ManaString
"Tenth District Veteran"
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"Explore Path" ManaString
"Path of Discovery"
ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ASetter Card Card Int Int
-> (Int -> Int)
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b.
ManaString
-> ASetter Card Card a b
-> (a -> b)
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
modifyCardDeprecated ManaString
"Tenth District Veteran" ASetter Card Card Int Int
Lens' Card Int
cardPlusOneCounters (Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"Gain life" ManaString
"Wildgrowth Walker" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
Int
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
gainLife Int
3
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"Untap" ManaString
"Famished Paladin" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
untap ManaString
"Famished Paladin"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Use Vona to destroy Baird" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
activate ManaString
"Destroy" ManaString
"" ManaString
"Vona, Butcher of Magan"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tap ManaString
"Vona, Butcher of Magan"
Int
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
loseLife Int
7
ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
target ManaString
"Baird, Steward of Argive"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
destroy ManaString
"Baird, Steward of Argive"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Float mana from creatures and artifact, untap with Rallying Roar" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
CardMatcher
-> (ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forCards (Player -> CardMatcher
matchController Player
Active CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> CardMatcher
matchInPlay CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> ManaString -> CardMatcher
matchAttribute ManaString
creature CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> ManaString -> CardMatcher
missingAttribute ManaString
tapped CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> ManaString -> CardMatcher
missingAttribute ManaString
summoned) (ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tapWithFreyalise ManaString
"W")
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
sacrifice ManaString
"Treasure"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
addMana ManaString
"1"
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
cast ManaString
"2W" ManaString
"Rallying Roar" ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
CardMatcher
-> (ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forCards (Player -> CardMatcher
matchController Player
Active CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> CardMatcher
matchInPlay CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> ManaString -> CardMatcher
matchAttribute ManaString
creature) ((Int, Int)
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
modifyStrength (Int
1, Int
1))
CardMatcher
-> (ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forCards (Player -> CardMatcher
matchController Player
Active CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> CardMatcher
matchInPlay CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> [ManaString] -> CardMatcher
matchAttributes [ManaString
creature, ManaString
tapped]) ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
untap
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Attack with all" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
[ManaString]
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
attackWith
[ ManaString
"Famished Paladin"
, ManaString
"Tenth District Veteran"
, ManaString
"Vona, Butcher of Magan"
, ManaString
"Cacophodon"
]
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Use Vona to destroy Ceratops in response to Tenth District Veteran trigger" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
trigger ManaString
"Untap" ManaString
"Tenth District Veteran"
ManaString
-> ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
activate ManaString
"Destroy" ManaString
"" ManaString
"Vona, Butcher of Magan"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tap ManaString
"Vona, Butcher of Magan"
Int
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
loseLife Int
7
ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
target ManaString
"Imperial Ceratops"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
destroy ManaString
"Imperial Ceratops"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Resolve veteran trigger, untap Vona" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolve ManaString
"Untap"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
untap ManaString
"Vona, Butcher of Magan"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Use Vona to destroy Everdawn Champion" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
ManaString
-> ManaString
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
activate ManaString
"Destroy" ManaString
"" ManaString
"Vona, Butcher of Magan"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
tap ManaString
"Vona, Butcher of Magan"
Int
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
loseLife Int
7
ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
resolveTop
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
target ManaString
"Everdawn Champion"
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
destroy ManaString
"Everdawn Champion"
Int
-> Player
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
validateLife Int
1 Player
Active
ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a. ManaString -> GameMonad a -> GameMonad a
step ManaString
"Combat damage for the win" (ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forall a b. (a -> b) -> a -> b
$ do
CardMatcher
-> (ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
())
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
forCards (ManaString -> CardMatcher
matchAttribute ManaString
attacking) ([ManaString]
-> ManaString
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
combatDamage [])
Int
-> Player
-> ExceptT
ManaString
(ReaderT Env (StateT Board (WriterT [Step] Identity)))
()
validateLife Int
0 Player
Opponent
attributes :: Formatter
attributes = FormatMonad () -> Formatter
attributeFormatter (FormatMonad () -> Formatter) -> FormatMonad () -> Formatter
forall a b. (a -> b) -> a -> b
$ do
ManaString -> GameMonad Int -> FormatMonad ()
forall a. Show a => ManaString -> GameMonad a -> FormatMonad ()
attribute ManaString
"op. life" (GameMonad Int -> FormatMonad ())
-> GameMonad Int -> FormatMonad ()
forall a b. (a -> b) -> a -> b
$ Player -> GameMonad Int
countLife Player
Opponent
ManaString -> GameMonad Int -> FormatMonad ()
forall a. Show a => ManaString -> GameMonad a -> FormatMonad ()
attribute ManaString
"our life" (GameMonad Int -> FormatMonad ())
-> GameMonad Int -> FormatMonad ()
forall a b. (a -> b) -> a -> b
$ Player -> GameMonad Int
countLife Player
Active
ManaString -> GameMonad Int -> FormatMonad ()
forall a. Show a => ManaString -> GameMonad a -> FormatMonad ()
attribute ManaString
"pool" (GameMonad Int -> FormatMonad ())
-> GameMonad Int -> FormatMonad ()
forall a b. (a -> b) -> a -> b
$ Player -> GameMonad Int
countManaPool Player
Active
formatter :: Step -> Formatter
formatter Step
step = Formatter
attributes Formatter -> Formatter -> Formatter
forall a. Semigroup a => a -> a -> a
<> case Getting Int Step Int -> Step -> Int
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting Int Step Int
Lens' Step Int
stepNumber Step
step of
Int
1 -> Formatter
boardFormatter
Int
4 -> ManaString -> CardMatcher -> Formatter
cardFormatter ManaString
"defending" (CardMatcher
matchInPlay CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> Player -> CardMatcher
matchController Player
Opponent)
Int
5 -> ManaString -> CardMatcher -> Formatter
cardFormatter ManaString
"defending" (CardMatcher
matchInPlay CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> Player -> CardMatcher
matchController Player
Opponent)
Int
10 -> ManaString -> CardMatcher -> Formatter
cardFormatter ManaString
"defending" (CardMatcher
matchInPlay CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> Player -> CardMatcher
matchController Player
Opponent)
Int
12 -> ManaString -> CardMatcher -> Formatter
cardFormatter ManaString
"attacking" (ManaString -> CardMatcher
matchAttribute ManaString
attacking)
Int
13 -> ManaString -> CardMatcher -> Formatter
cardFormatter ManaString
"defending" (CardMatcher
matchInPlay CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> Player -> CardMatcher
matchController Player
Opponent)
Int
15 -> ManaString -> CardMatcher -> Formatter
cardFormatter ManaString
"defending" (CardMatcher
matchInPlay CardMatcher -> CardMatcher -> CardMatcher
forall a. Semigroup a => a -> a -> a
<> Player -> CardMatcher
matchController Player
Opponent)
Int
_ -> Formatter
forall a. Monoid a => a
mempty