diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c9268b3b..716fcfa54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,11 @@ ## [master] (https://github.com/WagicProject/wagic/tree/master) +### 04/09/21 +- *Committed:* Added/fixed primitives, refactored and improved almost all transforming human cards (included all the Werewolves), improved "flip ability and "doubleside" ability adding a new "backside" option, fixed a bug on "doubleside" ability for planeswalkers, added "backside=" key to CardPrimitive in order to specify the other side of double-faced cards, added "hasbackside" option to target chooser in order to find cards which have a back side, added "dualfaced" that return 1 if a card has a backside card, fixed loyalty counter ability on planeswalker flip (is was not resolving correctly), changed type of damageToController, damageToOpponent, damageToCreature, wasDealtDamage, combatdamageToOpponent from bool to int in order to retrieve those values if needed, added "totaldmg" keyword that returns the total amount of damage dealt by a creature in the current turn, added new restriction "coven in order to check if a player controls three or more creatures with different powers, added new ability "hasdisturb" when the Retrace cost of a card is a disturb cost (e.g. "Beloved Beggar"). ([Vitty85](https://github.com/Vitty85)) + ### 03/09/21 -- *Committed:* Fixed primitives, fixed some possible crashes on Commander Format. ([Vitty85](https://github.com/Vitty85)) +- *Committed:* Fixed primitives, fixed some possible crashes on Commander Format. https://github.com/WagicProject/wagic/commit/236f677f2a08d538191de5c16970340dcd39c5f0 ([Vitty85](https://github.com/Vitty85)) ### 02/09/21 - *Committed:* Added/fixed primitives, updated the "missing_cards_by_sets" folder, fixed several crash on Commander Format, fixed a possible crash using "and!()!" with "imprint", added a new macros "_REBOUND_" and "_GOAD_" related to rebound and goad abilities and refactored all cards using them, implemented a new keywords "haunt", "hasprey", "preyname" and "isprey" related the haunting ability and improved all cards using it, Added "commander" and "\*" to HINT castpriority for AI decks in order to allow the user to give a cast priority to commanders. https://github.com/WagicProject/wagic/commit/001cea95bd501ca47b6510037af2725508f321d5 ([Vitty85](https://github.com/Vitty85)) diff --git a/projects/mtg/bin/Res/missing_cards_by_sets/EMN.txt b/projects/mtg/bin/Res/missing_cards_by_sets/EMN.txt index 736909656..c75e03189 100644 --- a/projects/mtg/bin/Res/missing_cards_by_sets/EMN.txt +++ b/projects/mtg/bin/Res/missing_cards_by_sets/EMN.txt @@ -33,12 +33,6 @@ power=0 toughness=3 [/card] [card] -name=Waxing Moon -text=Transform up to one target Werewolf you control. Creatures you control gain trample until end of turn. -mana={1}{G} -type=Instant -[/card] -[card] name=Mirrorwing Dragon abilities=flying text=Flying -- Whenever a player casts an instant or sorcery spell that targets only Mirrorwing Dragon, that player copies that spell for each other creature he or she controls that the spell could target. Each copy targets a different one of those creatures. diff --git a/projects/mtg/bin/Res/missing_cards_by_sets/SCG.txt b/projects/mtg/bin/Res/missing_cards_by_sets/SCG.txt index 3ce257fc2..921219f4b 100644 --- a/projects/mtg/bin/Res/missing_cards_by_sets/SCG.txt +++ b/projects/mtg/bin/Res/missing_cards_by_sets/SCG.txt @@ -97,6 +97,15 @@ mana={2} type=Artifact [/card] [card] +name=Exiled Doomsayer +text=All morph costs cost {2} more. (This doesn't affect the cost to cast creature spells face down.) +mana={1}{W} +type=Creature +subtype=Human Cleric +power=1 +toughness=2 +[/card] +[card] name=Grip of Chaos text=Whenever a spell or ability is put onto the stack, if it has a single target, reselect its target at random. (Select from among all legal targets.) mana={4}{R}{R} diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index 03d1b86ae..58a0caebc 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -1,7 +1,7 @@ grade=borderline #Bordeline Primitives Pack for Wagic the Homebrew. #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#I sorted this programatically - Vitty85 07-08-2021 +#I sorted this programatically - Vitty85 04-09-2021 [card] name=+2 Mace auto={3}:equip @@ -5081,11 +5081,12 @@ subtype=Equipment [/card] [card] name=Bearer of Overwhelming Truths +backside=Daring Sleuth abilities=prowess auto=@movedTo(*[-creature]|mystack):1/1 ueot auto=@combatdamagefoeof(player) from(this):name(Create clue) token(Clue) controller auto=@combatdamageof(player) from(this):name(Create clue) token(Clue) controller -text=Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.) -- Whenever Bearer of Overwhelming Truths deals combat damage to a player, investigate. (Create a colorless Clue artifact token with {2}, Sacrifice this artifact: Draw a card.) +text=Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.) -- Whenever Bearer of Overwhelming Truths deals combat damage to a player, investigate. (Create a colorless Clue artifact token with {2}, Sacrifice this artifact: Draw a card.) // Daring Sleuth type=Creature subtype=Human Wizard power=3 @@ -10091,10 +10092,12 @@ type=Instant [/card] [card] name=Chandra, Fire of Kaladesh -auto=@movedTo(*[red]|mystack):untap all(this) -auto=@movedto(Moonmist|stack):name(Transform Human Shaman) moveto(ownerBattlefield) && flip(Chandra, Roaring Flame) -auto={T}:damage:1 target(player) limit^moveto(exile) and!(moveto(mybattlefield) and!(counter(0/0,4,Loyalty) && flip(Chandra, Roaring Flame) )! )!^3 -text=Whenever you cast a red spell, untap Chandra, Fire of Kaladesh. -- {T}: Chandra, Fire of Kaladesh deals 1 damage to target player. If Chandra has dealt 3 or more damage this turn, exile her, then return her to the battlefield transformed under her owner's control. +backside=Chandra, Roaring Flame +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@movedTo(*[red]|mystack) restriction{compare(isflipped)~equalto~0}:untap +auto={T}:name(Deal 1 damage) target(player) damage:1 && if compare(totaldmg)~morethan~2 then all(this) moveto(exile) and!( moveto(ownerbattlefield) and!( flip(backside) )! )! +text=Whenever you cast a red spell, untap Chandra, Fire of Kaladesh. -- {T}: Chandra, Fire of Kaladesh deals 1 damage to target player. If Chandra has dealt 3 or more damage this turn, exile her, then return her to the battlefield transformed under her owner's control. // Chandra, Roaring Flame mana={1}{R}{R} type=Legendary Creature subtype=Human Shaman @@ -14291,9 +14294,11 @@ toughness=1 [/card] [card] name=Daring Sleuth -auto=@movedto(Moonmist|stack):name(Transform Human Rogue) flip(Bearer of Overwhelming Truths) -auto=@sacrificed(Clue|mybattlefield):flip(Bearer of Overwhelming Truths) -text=When you sacrifice a Clue, transform Daring Sleuth. +backside=Bearer of Overwhelming Truths +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@sacrificed(Clue|mybattlefield):flip(backside) +text=When you sacrifice a Clue, transform Daring Sleuth. // Bearer of Overwhelming Truths mana={1}{U} type=Creature subtype=Human Rogue @@ -20634,16 +20639,6 @@ power=3 toughness=3 [/card] [card] -name=Exiled Doomsayer -#It's not possible to alter the morph cost ATM. -text=All morph costs cost {2} more. (This doesn't affect the cost to cast creature spells face down.) -mana={1}{W} -type=Creature -subtype=Human Cleric -power=1 -toughness=2 -[/card] -[card] name=Exotic Orchard auto=this(variable{olandg}>0) {t}:out{g} auto=this(variable{olandu}>0) {t}:out{u} @@ -30086,10 +30081,11 @@ type=Instant [/card] [card] name=Hinterland Hermit -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Hinterland Scourge) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Hinterland Scourge) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Hinterland Scourge) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Hinterland Hermit. +backside=Hinterland Scourge +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Hinterland Hermit. // Hinterland Scourge mana={1}{R} type=Creature subtype=Human Werewolf @@ -30101,7 +30097,7 @@ name=Hinterland Scourge auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Hinterland Hermit) auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Hinterland Hermit) auto=_ATTACKING_all(creature|opponentbattlefield) transforms((,newability[mustblock])) ueot -text=Hinterland Scourge must be blocked if able. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Hinterland Scourge. +text=Hinterland Scourge must be blocked if able. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Hinterland Scourge. // Hinterland Hermit type=Creature subtype=Werewolf color=red @@ -33510,10 +33506,11 @@ type=Sorcery [/card] [card] name=Jace, Vryn's Prodigy -auto=@movedto(Moonmist|stack):name(Transform Human Wizard) flip(Jace, Telepath Unbound) -auto={T}:draw:1 controller && ability$!name(Discard a card) reject notatarget(*|myhand)!$ controller restriction{type(*|mygraveyard)~lessthan~4} -auto={T}:draw:1 controller && ability$!name(Discard a card) reject notatarget(*|myhand)!$ controller && moveto(exile) and!( moveto(mybattlefield) and!( haste && counter(0/0,5,Loyalty) && flip(Jace^ Telepath Unbound) )! )! restriction{type(*|mygraveyard)~morethan~3} -text={T}: Draw a card, then discard a card. If there are five or more cards in your graveyard, exile Jace, Vryn's Prodigy, then return him to the battlefield transformed under his owner's control. +backside=Jace, Telepath Unbound +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto={T}:name(Draw and discard) draw:1 controller && transforms((,newability[name(Discard a card) target(*|myhand) reject and!( if type(*|mygraveyard)~morethan~4 then all(this) moveto(exile) and!( moveto(ownerbattlefield) and!( flip(backside) )! )! )!])) forever +text={T}: Draw a card, then discard a card. If there are five or more cards in your graveyard, exile Jace, Vryn's Prodigy, then return him to the battlefield transformed under his owner's control. // Jace, Telepath Unbound mana={1}{U} type=Legendary Creature subtype=Human Wizard @@ -36348,10 +36345,12 @@ type=Artifact [/card] [card] name=Kytheon, Hero of Akros -auto=@movedto(Moonmist|stack):name(Transform Human Soldier) moveto(ownerBattlefield) && flip(Gideon, Battle-Forged) -auto=_BATTALION_moveto(exile) and!( moveto(mybattlefield) and!(counter(0/0,3,Loyalty) && flip(Gideon, Battle-Forged) -auto={2}{W}:all(this) indestructible ueot -text=At end of combat, if Kytheon, Hero of Akros and at least two other creatures attacked this combat, exile Kytheon, then return him to the battlefield transformed under his owner's control. -- {2}{W}: Kytheon gains indestructible until end of turn. +backside=Gideon, Battle-Forged +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=_BATTALION_moveto(exile) and!( moveto(ownerbattlefield) and!( flip(backside) )! )! +auto={2}{W}:name(Gains indestructible) transforms((,newability[indestructible])) ueot +text=At end of combat, if Kytheon, Hero of Akros and at least two other creatures attacked this combat, exile Kytheon, then return him to the battlefield transformed under his owner's control. -- {2}{W}: Kytheon gains indestructible until end of turn. // Gideon, Battle-Forged mana={W} type=Legendary Creature subtype=Human Soldier @@ -37644,9 +37643,11 @@ type=Instant [card] name=Liliana, Heretical Healer abilities=lifelink -auto=@movedto(Moonmist|stack):name(Transform Human Cleric) flip(Liliana, Defiant Necromancer) -auto=@movedTo(other creature[-token]|graveyard) from(myBattlefield):name(Liliana, Defiant Necromancer) moveto(exile) and!( moveto(mybattlefield) and!( transforms((,newability[counter(0/0.3.Loyalty)],newability[flip(Liliana^ Defiant Necromancer)],newability[name(Create Zombie) token(Zombie Lil)])) oneshot )! )! -text=Lifelink -- Whenever another nontoken creature you control dies, exile Liliana, Heretical Healer, then return her to the battlefield transformed under her owner's control. If you do, put a 2/2 black Zombie creature token onto the battlefield. +backside=Liliana, Defiant Necromancer +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@movedTo(other creature[-token]|graveyard) from(myBattlefield):name(Liliana, Defiant Necromancer) moveto(exile) and!( moveto(ownerbattlefield) and!( transforms((,newability[flip(backside)],newability[name(Create Zombie) token(Zombie Lil)])) oneshot )! )! +text=Lifelink -- Whenever another nontoken creature you control dies, exile Liliana, Heretical Healer, then return her to the battlefield transformed under her owner's control. If you do, put a 2/2 black Zombie creature token onto the battlefield. // Liliana, Defiant Necromancer mana={1}{B}{B} type=Legendary Creature subtype=Human Cleric @@ -38904,7 +38905,7 @@ toughness=4 [/card] [card] name=Magda, Brazen Outlaw -auto=lord(dwarf|mybattlefield) 1/0 +auto=lord(other dwarf|mybattlefield) 1/0 auto=@tapped(dwarf|mybattlefield):token(Treasure Sur) auto={S(*[treasure]|mybattlefield)}{S(*[treasure]|mybattlefield)}{S(*[treasure]|mybattlefield)}{S(*[treasure]|mybattlefield)}{S(*[treasure]|mybattlefield)}:name(Search dragon or artifact) target(*[dragon;artifact]|mylibrary) moveto(myBattlefield) and!( shuffle )! text=Other Dwarves you control get +1/+0. -- Whenever a Dwarf you control becomes tapped, create a Treasure token. -- Sacrifice five Treasures: Search your library for an artifact or Dragon card, put that card onto the battlefield, then shuffle your library. @@ -40751,12 +40752,12 @@ toughness=4 [/card] [card] name=Mila, Crafty Companion +backside=Lukka, Wayward Bonder other={4}{R}{R} name(Lukka, Wayward Bonder) otherrestriction=can play planeswalker,compare(isflipped)~equalto~1 restriction=compare(isflipped)~equalto~0 -anyzone={0}:doubleside(Lukka, Wayward Bonder) -autostack=if paid(alternative) then name(Lukka, Wayward Bonder) name(Lukka, Wayward Bonder) flip(Lukka, Wayward Bonder) forcetype(Legendary Planeswalker) -auto=if paid(alternative) then counter(0/0,5,Loyalty) +anyzone={0}:doubleside(backside) +autostack=if paid(alternative) then name(Lukka, Wayward Bonder) name(Lukka, Wayward Bonder) flip(backside) forcetype(Legendary Planeswalker) auto=@each blockers restriction{compare(isflipped)~equalto~0,type(creature[attacking]|opponentbattlefield)~morethan~0}:may name(Opponent attacked planeswalker) all(*[planeswalker]|mybattlefield) counter(0/0,1,Loyalty) auto=@targeted(*|mybattlefield) from(*|opponentzones) restriction{compare(isflipped)~equalto~0}:may name(Draw a card) draw:1 controller text=Whenever an opponent attacks one or more planeswalkers you control, put a loyalty counter on each planeswalker you control. -- Whenever a permanent you control becomes the target of a spell or ability an opponent controls, you may draw a card. // {4}{R}{R} Lukka, Wayward Bonder @@ -41677,6 +41678,7 @@ toughness=5 [/card] [card] name=Moonmist +auto=all(human[hasbackside]|battlefield) transforms((,newability[flip(backside)])) forever auto=preventAllCombatDamage from(creature[-wolf;-werewolf]|battlefield) ueot text=Transform all Humans. Prevent all combat damage that would be dealt this turn by creatures other than Werewolves and Wolves. (Only double-faced cards can be transformed.) mana={1}{G} @@ -41685,8 +41687,8 @@ type=Instant [card] name=Moraug, Fury of Akoum auto=@combat(attacking) source(creature|myBattlefield):all(trigger[to]) 1/0 ueot -auto=_LANDFALL_if compare(currentphase)~equalto~4 then nextphasealter(add,combatphaseswithmain,controller,after) else if compare(currentphase)~equalto~10 then nextphasealter(add,combatphaseswithmain,controller,after) else -auto=_LANDFALL_all(creature|mybattlefield) transforms((,newability[@each my combatends turnlimited:phaseaction[combatbegins once sourceinplay] untap])) ueot +auto=_LANDFALL_if compare(currentphase)~equalto~4 then nextphasealter(add,combatphases,controller,after) else if compare(currentphase)~equalto~10 then nextphasealter(add,combatphases,controller,after) else +auto=_LANDFALL_if compare(currentphase)~equalto~4 then all(creature|mybattlefield) transforms((,newability[phaseaction[combatbegins next once sourceinplay] untap])) ueot else if compare(currentphase)~equalto~10 then all(creature|mybattlefield) transforms((,newability[phaseaction[combatbegins once sourceinplay] untap])) ueot text=Each creature you control gets +1/+0 for each time it has attacked this turn. -- Landfall Whenever a land enters the battlefield under your control, if it's your main phase, there's an additional combat phase after this phase. At the beginning of that combat, untap all creatures you control. mana={4}{R}{R} type=Legendary Creature @@ -43227,9 +43229,12 @@ toughness=2 [card] name=Nicol Bolas, the Ravager abilities=flying -auto=ability$!name(discard) reject notatarget(*|myhand)!$ opponent -auto={4}{U}{B}{R}:moveto(exile) and!(moveto(mybattlefield) and!(counter(0/0,7,Loyalty) && flip(Nicol Bolas, the Arisen))! )! asSorcery -text=Flying -- When Nicol Bolas, the Ravager enters the battlefield, each opponent discards a card. -- {4}{U}{B}{R}: Exile Nicol Bolas, the Ravager, then return him to the battlefield transformed under his owner's control. Activate this ability only any time you could cast a sorcery. +backside=Nicol Bolas, the Arisen +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=ability$!name(Discard a card) name(Discard a card) reject notatarget(*|myhand)!$ opponent +auto={4}{U}{B}{R}:name(Exile and transform) moveto(exile) and!(moveto(ownerbattlefield) and!( flip(backside) )! )! asSorcery +text=Flying -- When Nicol Bolas, the Ravager enters the battlefield, each opponent discards a card. -- {4}{U}{B}{R}: Exile Nicol Bolas, the Ravager, then return him to the battlefield transformed under his owner's control. Activate this ability only any time you could cast a sorcery. // Nicol Bolas, the Arisen mana={1}{U}{B}{R} type=Legendary Creature subtype=Elder Dragon @@ -43667,10 +43672,12 @@ subtype=Aura [/card] [card] name=Nissa, Vastwood Seer -aicode=activate target(forest[basic]|mylibrary) moveto(myhand) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(<1>forest[basic]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>*|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend -auto=@movedto(land|mybattlefield) restriction{type(land|mybattlefield)~morethan~6}:all(this) moveto(exile) and!( moveto(mybattlefield) and!(counter(0/0,3,Loyalty) && flip(Nissa, Sage Animist) )! )! -text=When Nissa, Vastwood Seer enters the battlefield, you may search your library for a basic Forest card, reveal it, put it into your hand, then shuffle your library. -- Whenever a land enters the battlefield under your control, if you control seven or more lands, exile Nissa, then return her to the battlefield transformed under her owner's control. +backside=Nissa, Sage Animist +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=may name(Search basic forest) target(forest[basic]|mylibrary) moveto(myhand) and!( shuffle )! +auto=@movedto(land|mybattlefield) restriction{type(land|mybattlefield)~morethan~6}:name(Exile and transforms) moveto(exile) and!( moveto(mybattlefield) and!( flip(backside) )! )! +text=When Nissa, Vastwood Seer enters the battlefield, you may search your library for a basic Forest card, reveal it, put it into your hand, then shuffle your library. -- Whenever a land enters the battlefield under your control, if you control seven or more lands, exile Nissa, then return her to the battlefield transformed under her owner's control. // Nissa, Sage Animist mana={2}{G} type=Legendary Creature subtype=Elf Scout @@ -47950,9 +47957,10 @@ type=Instant [/card] [card] name=Price of Betrayal -target=artifact,creature,planeswalker -auto=counter(1/1,-5) -auto=counter(0/0,-5,loyalty) +auto=if type(artifact|battlefield)~morethan~0 then choice name(Remove 5 counters from an artifact) name(Remove 5 counters from an artifact) target(artifact) removesinglecountertype(1) && removesinglecountertype(1) && removesinglecountertype(1) && removesinglecountertype(1) && removesinglecountertype(1) +auto=if type(creature|battlefield)~morethan~0 then choice name(Remove 5 counters from a creature) name(Remove 5 counters from a creature) target(creature) removesinglecountertype(1) && removesinglecountertype(1) && removesinglecountertype(1) && removesinglecountertype(1) && removesinglecountertype(1) +auto=if type(planeswalker|battlefield)~morethan~0 then choice name(Remove 5 counters from a planeswalker) name(Remove 5 counters from a planeswalker) target(planeswalker) removesinglecountertype(1) && removesinglecountertype(1) && removesinglecountertype(1) && removesinglecountertype(1) && removesinglecountertype(1) +auto=choice name(Remove 5 counters from opponent) target(opponent) removesinglecountertype(1) && removesinglecountertype(1) && removesinglecountertype(1) && removesinglecountertype(1) && removesinglecountertype(1) text=Remove up to five counters from target artifact, creature, planeswalker, or opponent. mana={B} type=Sorcery @@ -60226,8 +60234,8 @@ type=Artifact [card] name=Spark Double auto=choice name(Don't copy anything) donothing -auto=choice name(Copy creature) target(creature|mybattlefield) copy and!( transforms((-legendary)) forever and!(counter(1/1))! )! -auto=choice name(Copy planeswalker) target(planeswalker|mybattlefield) copy and!( transforms((-legendary)) forever and!(counter(0/0,1,Loyalty))! )! +auto=choice name(Copy creature) target(creature|mybattlefield) copy options(nolegend) and!( counter(1/1) )! +auto=choice name(Copy planeswalker) target(planeswalker|mybattlefield) copy options(nolegend) and!( counter(0/0,1,Loyalty) )! text=You may have Spark Double enter the battlefield as a copy of a creature or planeswalker you control, except it enters with an additional +1/+1 counter on it if it's a creature, it enters with an additional loyalty counter on it if it's a planeswalker, and it isn't legendary if that permanent is legendary. mana={3}{U} type=Creature @@ -69750,14 +69758,14 @@ toughness=1 [/card] [card] name=Valki, God of Lies +backside=Tibalt, Cosmic Impostor other={5}{B}{R} name(Tibalt, Cosmic Impostor) otherrestriction=can play planeswalker,compare(isflipped)~equalto~1 restriction=compare(isflipped)~equalto~0 -anyzone={0}:doubleside(Tibalt, Cosmic Impostor) -autostack=if paid(alternative) then flip(Tibalt, Cosmic Impostor) forcetype(Legendary Planeswalker) +anyzone={0}:doubleside(backside) +autostack=if paid(alternative) then flip(backside) forcetype(Legendary Planeswalker) auto=ifnot paid(alternative) then if type(creature|opponenthand)~morethan~0 then name(Reveal hand and exile creature) name(Reveal hand and exile creature) name(Reveal hand and exile creature) target(creature|opponenthand) imprint auto=ifnot paid(alternative) then if type(creature|opponenthand)~equalto~0 then name(Reveal hand) name(Reveal hand) name(Reveal hand) target(*|opponenthand) moveto(opponenthand) -auto=if paid(alternative) then counter(0/0,5,Loyalty) auto=this(variable{hasevict}>0) this(variable{iscopied}<1) transforms((,newability[@movedto(this|nonbattlezone) from(battlefield):name(Put back exiled creature) target(creature[evictname]|opponentexile) moveTo(opponenthand)])) auto=this(variable{hasevict}>0) this(variable{evictmc}=0) this(variable{iscopied}<1) {0}:name(Becomes copy of exiled creature) copy target(creature[evictname]|opponentexile) auto=this(variable{hasevict}>0) this(variable{evictmc}=1) this(variable{iscopied}<1) {1}:name(Becomes copy of exiled creature) copy target(creature[evictname]|opponentexile) @@ -72411,6 +72419,14 @@ mana={G} type=Instant [/card] [card] +name=Waxing Moon +auto=may name(Transform a werewolf) target(werewolf[hasbackside]|mybattlefield) transforms((,newability[flip(backside)])) forever +auto=all(creature|mybattlefield) transforms((,newability[trample])) ueot +text=Transform up to one target Werewolf you control. Creatures you control gain trample until end of turn. +mana={1}{G} +type=Instant +[/card] +[card] name=Wayward Guide-Beast abilities=trample,haste auto=@combatdamaged(player) from(this):moveTo(ownerHand) target(land|myBattlefield) diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index 6dd7ce420..2a6fb5ac4 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -1,6 +1,6 @@ #Primitives Pack for Wagic the Homebrew. #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#I sorted this programatically so the other comments are removed except for AUTO_DEFINE - Vitty85 07-08-2021 +#I sorted this programatically so the other comments are removed except for AUTO_DEFINE - Vitty85 04-09-2021 [card] name=Abandon Reason target=creature @@ -91,9 +91,11 @@ subtype=Aura [card] name=Aberrant Researcher abilities=flying -auto=@movedto(Moonmist|stack):name(Transform Human Insect) flip(Perfected Form) -auto=@each my upkeep:name(Deplete) reveal:1 optionone target(*[instant;sorcery]|reveal) moveto(mygraveyard) and!( all(this) flip(Perfected Form) )! optiononeend optiontwo all(*|reveal) moveto(mygraveyard) optiontwoend revealend -text=Flying -- At the beginning of your upkeep, put the top card of your library into your graveyard. If it's an instant or sorcery card, transform Aberrant Researcher. +backside=Perfected Form +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each my upkeep:name(Deplete) all(*[zpos=1]|mylibrary) moveto(mygraveyard) and!( if cantargetcard(*[instant;sorcery]|*) then all(this) flip(backside) )! +text=Flying -- At the beginning of your upkeep, put the top card of your library into your graveyard. If it's an instant or sorcery card, transform Aberrant Researcher. // Perfected Form mana={3}{U} type=Creature subtype=Human Insect @@ -1589,10 +1591,11 @@ toughness=4 [/card] [card] name=Afflicted Deserter -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Werewolf Ransacker) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Werewolf Ransacker) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Werewolf Ransacker) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Afflicted Deserter. +backside=Werewolf Ransacker +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Afflicted Deserter. // Werewolf Ransacker mana={3}{R} type=Creature subtype=Human Werewolf @@ -5137,9 +5140,12 @@ toughness=2 [card] name=Archangel Avacyn abilities=flash,flying,vigilance +backside=Avacyn, the Purifier +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto=all(creature|mybattlefield) indestructible ueot -auto=@movedto(creature[-angel]|graveyard) from(mybattlefield) once:phaseaction[upkeep once,sourceinplay] flip(Avacyn, the Purifier) -text=Flash -- Flying, vigilance -- When Archangel Avacyn enters the battlefield, creatures you control gain indestructible until end of turn. -- When a non-Angel creature you control dies, transform Archangel Avacyn at the beginning of the next upkeep. +auto=@movedto(creature[-angel]|graveyard) from(mybattlefield) once:phaseaction[upkeep once,sourceinplay] flip(backside) +text=Flash -- Flying, vigilance -- When Archangel Avacyn enters the battlefield, creatures you control gain indestructible until end of turn. -- When a non-Angel creature you control dies, transform Archangel Avacyn at the beginning of the next upkeep. // Avacyn, the Purifier mana={3}{W}{W} type=Legendary Creature subtype=Angel @@ -7318,9 +7324,10 @@ toughness=4 [card] name=Avacyn, the Purifier abilities=flying +backside=Archangel Avacyn auto=damage:3 all(other creature) auto=damage:3 opponent -text=flying -- when this creature transforms into Avacyn, the Purifier, it deals 3 damage to each other creature and each opponent +text=flying -- when this creature transforms into Avacyn, the Purifier, it deals 3 damage to each other creature and each opponent // Archangel Avacyn type=Legendary Creature subtype=Angel color=red @@ -7329,9 +7336,11 @@ toughness=5 [/card] [card] name=Avacynian Missionaries -auto=@movedto(Moonmist|stack):name(Transform Human Cleric) flip(Lunarch Inquisitors) -auto=@each my endofturn restriction{geared}:flip(Lunarch Inquisitors) -text=At the beginning of your end step, if Avacynian Missionaries is equipped, transform it. +backside=Lunarch Inquisitors +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each my endofturn restriction{geared}:flip(backside) +text=At the beginning of your end step, if Avacynian Missionaries is equipped, transform it. // Lunarch Inquisitors mana={3}{W} type=Creature subtype=Human Cleric @@ -8054,8 +8063,9 @@ toughness=2 [card] name=Azamuki, Treachery Incarnate doublefaced=kamiflip -auto={C(0/0,-1,Ki)}:target(creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)])) ueot -text=Remove a ki counter from Azamuki, Treachery Incarnate: Gain control of target creature until end of turn. +backside=Cunning Bandit +auto={C(0/0,-1,Ki)}:name(Gain control of a creature) target(creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)])) ueot +text=Remove a ki counter from Azamuki, Treachery Incarnate: Gain control of target creature until end of turn. // Cunning Bandit color=red type=Legendary Creature subtype=Spirit @@ -8751,9 +8761,10 @@ toughness=5 [card] name=Bane of Hanweir abilities=mustattack -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Hanweir Watchkeep) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Hanweir Watchkeep) -text=Bane of Hanweir attacks each turn if able. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Bane of Hanweir. +backside=Hanweir Watchkeep +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Bane of Hanweir attacks each turn if able. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Bane of Hanweir. // Hanweir Watchkeep color=red type=Creature subtype=Werewolf @@ -12555,9 +12566,12 @@ type=Artifact [card] name=Bloodline Keeper abilities=flying +backside=Lord of Lineage +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto={T}:token(Vampire,Creature Vampire,2/2,black,flying) -auto={B}:flip(Lord of Lineage) restriction{type(vampire|mybattlefield)~morethan~4} -text=Flying -- {T}: Put a 2/2 black Vampire creature token with flying onto the battlefield. -- {B}: Transform Bloodline Keeper. Activate this ability only if you control five or more Vampires. +auto={B}:flip(backside) restriction{type(vampire|mybattlefield)~morethan~4} +text=Flying -- {T}: Put a 2/2 black Vampire creature token with flying onto the battlefield. -- {B}: Transform Bloodline Keeper. Activate this ability only if you control five or more Vampires. // Lord of Lineage mana={2}{B}{B} type=Creature subtype=Vampire @@ -14456,9 +14470,10 @@ toughness=2 [/card] [card] name=Branded Howler -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Convicted Killer) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Convicted Killer) -text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Branded Howler. +backside=Convicted Killer +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Branded Howler. // Convicted Killer type=Creature subtype=Werewolf color=red @@ -14684,10 +14699,11 @@ toughness=8 [/card] [card] name=Breakneck Rider -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Neck Breaker) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Neck Breaker) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Neck Breaker) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Breakneck Rider. +backside=Neck Breaker +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Breakneck Rider. // Neck Breaker mana={1}{R}{R} type=Creature subtype=Human Scout Werewolf @@ -15523,9 +15539,11 @@ type=Sorcery [card] name=Budoka Gardener doublefaced=kamiflip -auto=@movedto(Moonmist|stack):name(Transform Human Monk) flip(Dokai, Weaver of Life) -auto={T}:all(this) transforms((,newability[if type(land|mybattlefield)~morethan~9 then flip(Dokai^ Weaver of Life)],newability[may moveto(mybattlefield) notatarget(land|myhand)],newability[@movedto(land|mybattlefield) restriction{compare(type:land:mybattlefield)~morethan~9}:flip(Dokai^ Weaver of Life)])) ueot -text={T}: You may put a land card from your hand onto the battlefield. If you control ten or more lands, flip Budoka Gardener. +backside=Dokai, Weaver of Life +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto={T}:all(this) transforms((,newability[if type(land|mybattlefield)~morethan~9 then flip(backside)],newability[may moveto(mybattlefield) notatarget(land|myhand)],newability[@movedto(land|mybattlefield) restriction{compare(type:land:mybattlefield)~morethan~9}:flip(backside)])) ueot +text={T}: You may put a land card from your hand onto the battlefield. If you control ten or more lands, flip Budoka Gardener. // Dokai, Weaver of Life mana={1}{G} type=Creature subtype=Human Monk @@ -15535,10 +15553,12 @@ toughness=1 [card] name=Budoka Pupil doublefaced=kamiflip -auto=@movedto(Moonmist|stack):name(Transform Human Monk) flip(Ichiga, Who Topples Oaks) +backside=Ichiga, Who Topples Oaks +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto=@movedTo(spirit,arcane|mystack):may counter(0/0,1,Ki) -auto=@each endofturn:this(counter{0/0.2.Ki}) flip(Ichiga, Who Topples Oaks) -text=Whenever you cast a Spirit or Arcane spell, you may put a ki counter on Budoka Pupil. -- At the beginning of the end step, if there are two or more ki counters on Budoka Pupil, you may flip it. -- ---- -- Ichiga, Who Topples Oaks -- Legendary Creature - Spirit -- 4/3 -- Trample -- Remove a ki counter from Ichiga, Who Topples Oaks: Target creature gets +2/+2 until end of turn. +auto=@each endofturn:this(counter{0/0.1.Ki}>=2) flip(backside) +text=Whenever you cast a Spirit or Arcane spell, you may put a ki counter on Budoka Pupil. -- At the beginning of the end step, if there are two or more ki counters on Budoka Pupil, you may flip it. -- ---- -- Ichiga, Who Topples Oaks -- Legendary Creature - Spirit -- 4/3 -- Trample -- Remove a ki counter from Ichiga, Who Topples Oaks: Target creature gets +2/+2 until end of turn. // Ichiga, Who Topples Oaks mana={1}{G}{G} type=Creature subtype=Human Monk @@ -15972,9 +15992,11 @@ type=Instant [card] name=Bushi Tenderfoot doublefaced=kamiflip -auto=@movedto(Moonmist|stack):name(Transform Human Soldier) flip(Kenzo the Hardhearted) -auto=@vampired(creature) from(this):all(trigger[from]) flip(Kenzo the Hardhearted) -text=When a creature dealt damage by Bushi Tenderfoot this turn is put into a graveyard, flip Bushi Tenderfoot. +backside=Kenzo the Hardhearted +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@vampired(creature) from(this):all(trigger[from]) flip(backside) +text=When a creature dealt damage by Bushi Tenderfoot this turn is put into a graveyard, flip Bushi Tenderfoot. // Kenzo the Hardhearted mana={W} type=Creature subtype=Human Soldier @@ -16558,10 +16580,12 @@ toughness=3 [card] name=Callow Jushi doublefaced=kamiflip +backside=Jaraku the Interloper +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto=@movedTo(spirit,arcane|mystack):may counter(0/0,1,Ki) -auto=@movedto(Moonmist|stack):name(Transform Human Wizard) flip(Jaraku the Interloper) -auto=@each endofturn:this(counter{0/0.2.Ki}) may flip(Jaraku the Interloper) -text=Whenever you cast a Spirit or Arcane spell, you may put a ki counter on Callow Jushi. -- At the beginning of the end step, if there are two or more ki counters on Callow Jushi, you may flip it. +auto=@each endofturn:this(counter{0/0.2.Ki}) may flip(backside) +text=Whenever you cast a Spirit or Arcane spell, you may put a ki counter on Callow Jushi. -- At the beginning of the end step, if there are two or more ki counters on Callow Jushi, you may flip it. // Jaraku the Interloper mana={1}{U}{U} type=Creature subtype=Human Wizard @@ -19563,9 +19587,11 @@ subtype=Aura [/card] [card] name=Chosen of Markov -auto=@movedto(Moonmist|stack):name(Transform Human) flip(Markov's Servant) -auto={T}{T(vampire|mybattlefield)}:all(this) flip(Markov's Servant) -text={T}, Tap an untapped Vampire you control: Transform Chosen of Markov. +backside=Markov's Servant +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto={T}{T(vampire|mybattlefield)}:all(this) flip(backside) +text={T}, Tap an untapped Vampire you control: Transform Chosen of Markov. // Markov's Servant mana={2}{B} type=Creature subtype=Human @@ -20119,9 +20145,11 @@ toughness=2 [/card] [card] name=Civilized Scholar -auto=@movedto(Moonmist|stack):name(Transform Human Advisor) flip(Homicidal Brute) -auto={T}:draw:1 && ability$! reject notatarget(*|myhand) and!( if cantargetcard(creature|*) then all(mysource) flip(Homicidal Brute) && all(mysource) untap )! !$ controller -text={T}: Draw a card, then discard a card. If a creature card is discarded this way, untap Civilized Scholar, then transform it. +backside=Homicidal Brute +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto={T}:draw:1 && ability$!name(Discard a card) name(Discard a card) reject notatarget(*|myhand) and!( if cantargetcard(creature|*) then all(mysource) flip(backside) && all(mysource) untap )! !$ controller +text={T}: Draw a card, then discard a card. If a creature card is discarded this way, untap Civilized Scholar, then transform it. // Homicidal Brute mana={2}{U} type=Creature subtype=Human Advisor @@ -20606,9 +20634,11 @@ toughness=0 [/card] [card] name=Cloistered Youth -auto=@movedto(Moonmist|stack):name(Transform Human) flip(Unholy Fiend) -auto=@each my upkeep:may flip(Unholy Fiend) -text=At the beginning of your upkeep, you may transform Cloistered Youth. +backside=Unholy Fiend +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each my upkeep:may name(Transform human) flip(backside) +text=At the beginning of your upkeep, you may transform Cloistered Youth. // Unholy Fiend mana={1}{W} type=Creature subtype=Human @@ -22316,10 +22346,11 @@ type=Enchantment [/card] [card] name=Convicted Killer -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Branded Howler) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Branded Howler) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Branded Howler) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Convicted Killer. +backside=Branded Howler +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Convicted Killer. // Branded Howler mana={2}{R} type=Creature subtype=Human Werewolf @@ -24770,10 +24801,12 @@ toughness=1 [card] name=Cunning Bandit doublefaced=kamiflip +backside=Azamuki, Treachery Incarnate +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto=@movedTo(spirit,arcane|mystack):may counter(0/0,1,Ki) -auto=@movedto(Moonmist|stack):name(Transform Human Warrior) flip(Azamuki, Treachery Incarnate) -auto=@each endofturn:this(counter{0/0.2.Ki}) flip(Azamuki, Treachery Incarnate) -text=Whenever you cast a Spirit or Arcane spell, you may put a ki counter on Cunning Bandit. -- At the beginning of the end step, if there are two or more ki counters on Cunning Bandit, you may flip it. -- ---- -- Azamuki, Treachery Incarnate -- Legendary Creature - Spirit -- 5/2 -- Remove a ki counter from Azamuki, Treachery Incarnate: Gain control of target creature until end of turn. +auto=@each endofturn:this(counter{0/0.2.Ki}) flip(backside) +text=Whenever you cast a Spirit or Arcane spell, you may put a ki counter on Cunning Bandit. -- At the beginning of the end step, if there are two or more ki counters on Cunning Bandit, you may flip it. // Azamuki, Treachery Incarnate mana={1}{R}{R} type=Creature subtype=Human Warrior @@ -26617,11 +26650,12 @@ subtype=Aura [/card] [card] name=Daybreak Ranger +backside=Nightfall Predator +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto={T}:damage:2 target(creature[flying]) -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Nightfall Predator) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Nightfall Predator) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Nightfall Predator) -text={T}: Daybreak Ranger deals 2 damage to target creature with flying. -- At the beginning of each upkeep, if no spells were cast last turn, transform Daybreak Ranger. +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text={T}: Daybreak Ranger deals 2 damage to target creature with flying. -- At the beginning of each upkeep, if no spells were cast last turn, transform Daybreak Ranger. // Nightfall Predator mana={2}{G} type=Creature subtype=Human Archer Werewolf @@ -28179,10 +28213,12 @@ type=Enchantment [/card] [card] name=Delver of Secrets -auto=@movedto(Moonmist|stack):name(Transform Human Wizard) flip(Insectile Aberration) -aicode=activate target(*[instant;sorcery;zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(*[instant;sorcery]|*) then all(this) flip(Insectile Aberration) oneshot ) !)! -auto=@each my upkeep:name(look) reveal:1 optionone name(transform) target(*[instant;sorcery]|reveal) moveto(mylibrary) and!( all(this) transforms((,newability[flip(Insectile Aberration)])) forever )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend -text=At the beginning of your upkeep, look at the top card of your library. You may reveal that card. If an instant or sorcery card is revealed this way, transform Delver of Secrets. +backside=Insectile Aberration +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +aicode=activate target(*[instant;sorcery;zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(*[instant;sorcery]|*) then all(this) flip(backside) oneshot ) !)! +auto=@each my upkeep:name(look) reveal:1 optionone name(transform) target(*[instant;sorcery]|reveal) moveto(mylibrary) and!( all(this) transforms((,newability[flip(backside)])) forever )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend +text=At the beginning of your upkeep, look at the top card of your library. You may reveal that card. If an instant or sorcery card is revealed this way, transform Delver of Secrets. // Insectile Aberration mana={U} type=Creature subtype=Human Wizard @@ -28369,8 +28405,9 @@ subtype=Equipment [/card] [card] name=Demon-Possessed Witch -auto=destroy target(creature) -text=When this creature transforms into Demon-Possessed Witch, you may destroy target creature. +backside=Kindly Stranger +auto=may name(Destroy a creature) destroy target(creature) +text=When this creature transforms into Demon-Possessed Witch, you may destroy target creature. // Kindly Stranger type=Creature subtype=Human Shaman color=black @@ -30487,8 +30524,9 @@ type=Instant [card] name=Dokai, Weaver of Life doublefaced=kamiflip +backside=Budoka Gardener auto={4}{G}{G}{T}:token(Elemental,Creature Elemental,type:land:mybattlefield/type:land:mybattlefield,green) controller -text={4}{G}{G}, {T}: Put an X/X green Elemental creature token onto the battlefield, where X is the number of lands you control. +text={4}{G}{G}, {T}: Put an X/X green Elemental creature token onto the battlefield, where X is the number of lands you control. // Budoka Gardener mana={1}{G} type=Legendary Creature subtype=Human Monk @@ -33045,12 +33083,13 @@ toughness=1 [/card] [card] name=Duskwatch Recruiter +backside=Krallenhorde Howler +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) aicode=activate target(creature[zpos<=3]|mylibrary) moveto(myhand) auto={2}{G}:name(look) reveal:3 optionone name(Get Creature) target(creature|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Krallenhorde Howler) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Krallenhorde Howler) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Krallenhorde Howler) -text={2}{G}: Look at the top three cards of your library. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in any order. -- At the beginning of each upkeep, if no spells were cast last turn, transform Duskwatch Recruiter. +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text={2}{G}: Look at the top three cards of your library. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in any order. -- At the beginning of each upkeep, if no spells were cast last turn, transform Duskwatch Recruiter. // Krallenhorde Howler mana={1}{G} type=Creature subtype=Human Warrior Werewolf @@ -38021,9 +38060,10 @@ toughness=4 [/card] [card] name=Extricator of Flesh +backside=Extricator of Sin auto=lord(eldrazi|mybattlefield) vigilance -auto={2}{t}{s(creature[-eldrazi]|mybattlefield)}:token(Eldrazi Horror) controller -text=Eldrazi you control have vigilance. -- {2}, {T}, Sacrifice a non-Eldrazi creature: Put a 3/2 colorless Eldrazi Horror creature token onto the battlefield. +auto={2}{T}{S(creature[-eldrazi]|mybattlefield)}:token(Eldrazi Horror) controller +text=Eldrazi you control have vigilance. -- {2}, {T}, Sacrifice a non-Eldrazi creature: Put a 3/2 colorless Eldrazi Horror creature token onto the battlefield. // Extricator of Sin type=Creature subtype=Eldrazi Horror power=3 @@ -38031,10 +38071,12 @@ toughness=5 [/card] [card] name=Extricator of Sin -auto=may sacrifice target(*|mybattlefield) && token(Eldrazi Horror) controller -auto=@movedto(Moonmist|stack):name(Transform Human Cleric) flip(Extricator of Flesh) -auto=@each upkeep restriction{delirium}:flip(Extricator of Flesh) -text=When Extricator of Sin enters the battlefield, you may sacrifice another permanent. If you do, put a 3/2 colorless Eldrazi Horror creature token onto the battlefield. -- Delirium -- At the beginning of your upkeep, if there are four or more card types among cards in your graveyard, transform Extricator of Sin. +backside=Extricator of Flesh +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=may name(Sacrifice permanent) sacrifice target(*|mybattlefield) && token(Eldrazi Horror) controller +auto=@each upkeep restriction{delirium}:flip(backside) +text=When Extricator of Sin enters the battlefield, you may sacrifice another permanent. If you do, put a 3/2 colorless Eldrazi Horror creature token onto the battlefield. -- Delirium -- At the beginning of your upkeep, if there are four or more card types among cards in your graveyard, transform Extricator of Sin. // Extricator of Flesh mana={2}{W} type=Creature subtype=Human Cleric @@ -38519,10 +38561,12 @@ toughness=4 [card] name=Faithful Squire doublefaced=kamiflip +backside=Kaiso, Memory of Loyalty +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto=@movedTo(spirit,arcane|mystack):may counter(0/0,1,Ki) -auto=@movedto(Moonmist|stack):name(Transform Human Soldier) flip(Kaiso, Memory of Loyalty) -auto=@each endofturn:this(counter{0/0.2.Ki}) flip(Kaiso, Memory of Loyalty) -text=Whenever you cast a Spirit or Arcane spell, you may put a ki counter on Faithful Squire. -- At the beginning of the end step, if there are two or more ki counters on Faithful Squire, you may flip it. +auto=@each endofturn:this(counter{0/0.2.Ki}) flip(backside) +text=Whenever you cast a Spirit or Arcane spell, you may put a ki counter on Faithful Squire. -- At the beginning of the end step, if there are two or more ki counters on Faithful Squire, you may flip it. // Kaiso, Memory of Loyalty mana={1}{W}{W} type=Creature subtype=Human Soldier @@ -41194,10 +41238,11 @@ toughness=4 [/card] [card] name=Flameheart Werewolf +backside=Kessig Forgemaster auto=@combat(blocking,blocked) source(this) from(creature):damage:2 all(trigger[from]) -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Kessig Forgemaster) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Kessig Forgemaster) -text=Whenever Flameheart Werewolf blocks or becomes blocked by a creature, Flameheart Werewolf deals 2 damage to that creature. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Flameheart Werewolf. +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Whenever Flameheart Werewolf blocks or becomes blocked by a creature, Flameheart Werewolf deals 2 damage to that creature. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Flameheart Werewolf. // Kessig Forgemaster type=Creature subtype=Werewolf color=red @@ -44763,10 +44808,11 @@ toughness=2 [/card] [card] name=Gatstaf Arsonists -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Gatstaf Ravagers) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Gatstaf Ravagers) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Gatstaf Ravagers) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Gatstaf Arsonists. +backside=Gatstaf Ravagers +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Gatstaf Arsonists. // Gatstaf Ravagers mana={4}{R} type=Creature subtype=Human Werewolf @@ -44776,9 +44822,10 @@ toughness=4 [card] name=Gatstaf Howler abilities=intimidate -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Gatstaf Shepherd) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Gatstaf Shepherd) -text=Intimidate (This creature can't be blocked except by artifact creatures and/or creatures that share a color with it.) -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Howler. +backside=Gatstaf Shepherd +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Intimidate (This creature can't be blocked except by artifact creatures and/or creatures that share a color with it.) -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Howler. // Gatstaf Shepherd color=green type=Creature subtype=Werewolf @@ -44787,10 +44834,11 @@ toughness=3 [/card] [card] name=Gatstaf Ravagers -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Gatstaf Arsonists) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Gatstaf Arsonists) abilities=menace -text=Menace (This creature can't be blocked except by two or more creatures.) -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Ravagers. +backside=Gatstaf Arsonists +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Menace (This creature can't be blocked except by two or more creatures.) -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Ravagers. // Gatstaf Arsonists type=Creature subtype=Werewolf color=red @@ -44799,10 +44847,11 @@ toughness=5 [/card] [card] name=Gatstaf Shepherd -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Gatstaf Howler) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Gatstaf Howler) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Gatstaf Howler) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Gatstaf Shepherd. +backside=Gatstaf Howler +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Gatstaf Shepherd. // Gatstaf Howler mana={1}{G} type=Creature subtype=Human Werewolf @@ -44905,10 +44954,11 @@ toughness=1 [card] name=Geier Reach Bandit abilities=haste -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Vildin-Pack Alpha) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Vildin-Pack Alpha) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Vildin-Pack Alpha) -text=Haste -- At the beginning of each upkeep, if no spells were cast last turn, transform Geier Reach Bandit. +backside=Vildin-Pack Alpha +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=Haste -- At the beginning of each upkeep, if no spells were cast last turn, transform Geier Reach Bandit. // Vildin-Pack Alpha mana={2}{R} type=Creature subtype=Human Rogue Werewolf @@ -50529,8 +50579,9 @@ toughness=7 [/card] [card] name=Grisly Anglerfish +backside=Grizzled Angler auto={6}:all(creature|opponentbattlefield) mustattack ueot -text={6}: Creatures your opponents control attack this turn if able. +text={6}: Creatures your opponents control attack this turn if able. // Grizzled Angler type=Creature subtype=Eldrazi Fish power=4 @@ -50662,9 +50713,11 @@ toughness=3 [/card] [card] name=Grizzled Angler -auto=@movedto(Moonmist|stack):name(Transform Human) flip(Grisly Anglerfish) -auto={t}:deplete:2 && if type(creature[colorless]|mygraveyard)~morethan~0 then flip(Grisly Anglerfish) -text={T}: Put the top two cards of your library into your graveyard. Then if there is a colorless creature card in your graveyard, transform Grizzled Angler. +backside=Grisly Anglerfish +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto={t}:deplete:2 && if type(creature[colorless]|mygraveyard)~morethan~0 then flip(backside) +text={T}: Put the top two cards of your library into your graveyard. Then if there is a colorless creature card in your graveyard, transform Grizzled Angler. // Grisly Anglerfish mana={2}{U} type=Creature subtype=Human @@ -50681,10 +50734,11 @@ toughness=5 [/card] [card] name=Grizzled Outcasts -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Krallenhorde Wantons) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Krallenhorde Wantons) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Krallenhorde Wantons) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Grizzled Outcasts. +backside=Krallenhorde Wantons +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Grizzled Outcasts. // Krallenhorde Wantons mana={4}{G} type=Creature subtype=Human Werewolf @@ -52212,9 +52266,11 @@ toughness=2 [/card] [card] name=Hanweir Militia Captain -auto=@movedto(Moonmist|stack):name(Transform Human Soldier) flip(Westvale Cult Leader) -auto=@each my upkeep restriction{type(creature|mybattlefield)~morethan~3}: transforms((,newability[flip(Westvale Cult Leader)])) forever -text=At the beginning of your upkeep, if you control four or more creatures, transform Hanweir Militia Captain. +backside=Westvale Cult Leader +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each my upkeep restriction{type(creature|mybattlefield)~morethan~3}:flip(backside) +text=At the beginning of your upkeep, if you control four or more creatures, transform Hanweir Militia Captain. // Westvale Cult Leader mana={1}{W} type=Creature subtype=Human Soldier @@ -52235,10 +52291,11 @@ toughness=4 [card] name=Hanweir Watchkeep abilities=defender -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Bane of Hanweir) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Bane of Hanweir) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Bane of Hanweir) -text=Defender -- At the beginning of each upkeep, if no spells were cast last turn, transform Hanweir Watchkeep. +backside=Bane of Hanweir +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=Defender -- At the beginning of each upkeep, if no spells were cast last turn, transform Hanweir Watchkeep. // Bane of Hanweir mana={2}{R} type=Creature subtype=Human Warrior Werewolf @@ -54120,11 +54177,12 @@ toughness=1 [/card] [card] name=Hermit of the Natterknolls -auto=@movedTo(*|opponentstack) restriction{during opponent turn}:draw:1 -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Lone Wolf of the Natterknolls) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Lone Wolf of the Natterknolls) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Lone Wolf of the Natterknolls) -text=Whenever an opponent casts a spell during your turn, draw a card. -- At the beginning of each upkeep, if no spells were cast last turn, transform Hermit of the Natterknolls. +backside=Lone Wolf of the Natterknolls +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@movedTo(*|opponentstack) restriction{during opponent turn}:name(Draw a card) draw:1 +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=Whenever an opponent casts a spell during your turn, draw a card. -- At the beginning of each upkeep, if no spells were cast last turn, transform Hermit of the Natterknolls. // Lone Wolf of the Natterknolls mana={2}{G} type=Creature subtype=Human Werewolf @@ -54685,10 +54743,11 @@ type=Land [/card] [card] name=Hinterland Logger -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Timber Shredder) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Timber Shredder) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Timber Shredder) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Hinterland Logger. +backside=Timber Shredder +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Hinterland Logger. // Timber Shredder mana={1}{G} type=Creature subtype=Human Werewolf @@ -54707,11 +54766,13 @@ toughness=4 [/card] [card] name=Hired Muscle -auto=@movedTo(spirit,arcane|mystack):may counter(0/0,1,Ki) -auto=@movedto(Moonmist|stack):name(Transform Human Warrior) flip(Scarmaker) -auto=@each endofturn:this(counter{0/0.2.Ki}) flip(Scarmaker) doublefaced=kamiflip -text=Whenever you cast a Spirit or Arcane spell, you may put a ki counter on Hired Muscle. -- At the beginning of the end step, if there are two or more ki counters on Hired Muscle, you may flip it. -- ---- -- Scarmaker -- Legendary Creature - Spirit -- 4/4 -- Remove a ki counter from Scarmaker: Target creature gains fear until end of turn. (It can't be blocked except by artifact creatures and/or black creatures.) +backside=Scarmaker +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@movedTo(spirit,arcane|mystack):may counter(0/0,1,Ki) +auto=@each endofturn:this(counter{0/0.2.Ki}) flip(backside) +text=Whenever you cast a Spirit or Arcane spell, you may put a ki counter on Hired Muscle. -- At the beginning of the end step, if there are two or more ki counters on Hired Muscle, you may flip it. // Scarmaker mana={1}{B}{B} type=Creature subtype=Human Warrior @@ -55103,9 +55164,9 @@ text={T}: Add {1} to your mana pool. {T}: Each player gains control of all creat [/card] [card] name=Homicidal Brute -auto=@movedto(Moonmist|stack):name(Transform Human Mutant) flip(Civilized Scholar) -auto=@each my endofturn restriction{didntattack}:tap && flip(Civilized Scholar) -text=At the beginning of your end step, if Homicidal Brute didn't attack this turn, tap Homicidal Brute, then transform it. +backside=Civilized Scholar +auto=@each my endofturn restriction{didntattack}:tap && flip(backside) +text=At the beginning of your end step, if Homicidal Brute didn't attack this turn, tap Homicidal Brute, then transform it. // Civilized Scholar type=Creature subtype=Human Mutant power=5 @@ -55131,9 +55192,11 @@ type=Instant name=Homura, Human Ascendant doublefaced=kamiflip abilities=cantblock -auto=@movedto(Moonmist|stack):name(Transform Human Monk) flip(Homura's Essence) -auto=_DIES_all(trigger[to]) transforms((,newability[moveTo(mybattlefield)],newability[flip(Homura's Essence)])) -text=Homura, Human Ascendant can't block. -- When Homura is put into a graveyard from the battlefield, return it to the battlefield flipped. +backside=Homura's Essence +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=_DIES_all(trigger[to]) transforms((,newability[moveTo(mybattlefield)],newability[flip(backside)])) forever +text=Homura, Human Ascendant can't block. -- When Homura is put into a graveyard from the battlefield, return it to the battlefield flipped. // Homura's Essence mana={4}{R}{R} type=Legendary Creature subtype=Human Monk @@ -55143,10 +55206,11 @@ toughness=4 [card] name=Homura's Essence doublefaced=kamiflip +backside=Homura, Human Ascendant auto=lord(creature|mybattlefield) 2/2 auto=lord(creature|mybattlefield) flying auto=lord(creature|mybattlefield) {R}:1/0 -text=Creatures you control get +2/+2 and have flying and "{R}: This creature gets +1/+0 until end of turn". +text=Creatures you control get +2/+2 and have flying and "{R}: This creature gets +1/+0 until end of turn". // Homura, Human Ascendant color=red type=Legendary Enchantment [/card] @@ -55894,12 +55958,12 @@ toughness=2 [/card] [card] name=Howlpack Alpha -auto=lord(other werewolf|mybattlefield) 1/1 -auto=lord(other wolf|mybattlefield) 1/1 +backside=Mayor of Avabruck +auto=lord(other creature[werewolf;wolf]]|mybattlefield) 1/1 auto=@each my endofturn:token(Wolf,Creature Wolf,2/2,green) -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Mayor of Avabruck) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Mayor of Avabruck) -text=Other Werewolf and Wolf creatures you control get +1/+1. -- At the beginning of your end step, put a 2/2 green Wolf creature token onto the battlefield. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Howlpack Alpha. +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Other Werewolf and Wolf creatures you control get +1/+1. -- At the beginning of your end step, put a 2/2 green Wolf creature token onto the battlefield. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Howlpack Alpha. // Mayor of Avabruck color=green type=Creature subtype=Werewolf @@ -55908,9 +55972,10 @@ toughness=3 [/card] [card] name=Howlpack of Estwald -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Villagers of Estwald) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Villagers of Estwald) -text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Howlpack of Estwald. +backside=Villagers of Estwald +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Howlpack of Estwald. // Villagers of Estwald color=green type=Creature subtype=Werewolf @@ -56373,12 +56438,13 @@ type=Sorcery [/card] [card] name=Huntmaster of the Fells +backside=Ravager of the Fells +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto=token(Wolf,Creature Wolf,2/2,green) auto=life:2 controller -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Ravager of the Fells) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Ravager of the Fells) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Ravager of the Fells) -text=Whenever this creature enters the battlefield or transforms into Huntmaster of the Fells, put a 2/2 green wolf token onto the battlefield and you gain 2 life. -- At the beginning of each upkeep, if no spells were cast last turn, transform Huntmaster of the Fells. +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=Whenever this creature enters the battlefield or transforms into Huntmaster of the Fells, put a 2/2 green wolf token onto the battlefield and you gain 2 life. -- At the beginning of each upkeep, if no spells were cast last turn, transform Huntmaster of the Fells. // Ravager of the Fells mana={2}{R}{G} type=Creature subtype=Human Werewolf @@ -56844,9 +56910,10 @@ type=Sorcery [card] name=Ichiga, Who Topples Oaks doublefaced=kamiflip +backside=Budoka Pupil abilities=trample auto={C(0/0,-1,Ki)}:2/2 target(creature) ueot -text=Trample -- Remove a ki counter from Ichiga, Who Topples Oaks: Target creature gets +2/+2 until end of turn. +text=Trample -- Remove a ki counter from Ichiga, Who Topples Oaks: Target creature gets +2/+2 until end of turn. // Budoka Pupil color=green type=Legendary Creature subtype=Spirit @@ -57667,8 +57734,9 @@ type=Instant [card] name=Incited Rabble abilities=mustattack -auto={2}:1/0 ueot -text=Incited Rabble attacks each combat if able. -- {2}: Incited Rabble gets +1/+0 until end of turn. +backside=Town Gossipmonger +auto={2}:name(Gets 1/0) 1/0 ueot +text=Incited Rabble attacks each combat if able. -- {2}: Incited Rabble gets +1/+0 until end of turn. // Town Gossipmonger type=Creature subtype=Human power=2 @@ -58483,6 +58551,7 @@ toughness=1 [/card] [card] name=Insectile Aberration +backside=Delver of Secrets type=Creature abilities=flying subtype=Human Insect @@ -58617,11 +58686,12 @@ type=Instant [/card] [card] name=Instigator Gang +backside=Wildblood Pack +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto=lord(creature[attacking]|mybattlefield) 1/0 -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Wildblood Pack) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Wildblood Pack) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Wildblood Pack) -text=Attacking creatures you control get +1/+0. -- At the beginning of each upkeep, if no spells were cast last turn, transform Instigator Gang. +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=Attacking creatures you control get +1/+0. -- At the beginning of each upkeep, if no spells were cast last turn, transform Instigator Gang. // Wildblood Pack mana={3}{R} type=Creature subtype=Human Werewolf @@ -59171,9 +59241,10 @@ toughness=2 [card] name=Ironfang abilities=first strike -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Village Ironsmith) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Village Ironsmith) -text=First Strike -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ironfang. +backside=Village Ironsmith +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=First Strike -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ironfang. // Village Ironsmith color=red type=Creature subtype=Werewolf @@ -59408,8 +59479,9 @@ toughness=11 [/card] [card] name=It That Rides as One -abilities=first strike, trample, lifelink -text=First strike, trample, lifelink +abilities=first strike,trample,lifelink +backside=Lone Rider +text=First strike, trample, lifelink // Lone Rider type=Creature subtype=Eldrazi Horror power=4 @@ -59906,8 +59978,9 @@ type=Sorcery [card] name=Jaraku the Interloper doublefaced=kamiflip +backside=Callow Jushi auto={C(0/0,-1,Ki)}:name(counter spell) target(*|stack) transforms((,newability[pay[[{2}]] name(pay 2 mana) donothing?fizzle])) forever -text=Remove a ki counter from Jaraku the Interloper: Counter target spell unless its controller pays {2}. +text=Remove a ki counter from Jaraku the Interloper: Counter target spell unless its controller pays {2}. // Callow Jushi color=blue type=Legendary Creature subtype=Spirit @@ -60957,10 +61030,12 @@ toughness=3 [card] name=Jushi Apprentice doublefaced=kamiflip -auto={2}{U}{T}:draw:1 controller restriction{type(*|myhand)~lessthan~8} -auto=@movedto(Moonmist|stack):name(Transform Human Wizard) flip(Tomoya the Revealer) -auto={2}{U}{T}:draw:1 controller && flip(Tomoya the Revealer) restriction{type(*|myhand)~morethan~7} -text={2}{U}, {T}: Draw a card. If you have nine or more cards in hand, flip Jushi Apprentice. +backside=Tomoya the Revealer +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto={2}{U}{T}:name(Draw a card) draw:1 controller restriction{type(*|myhand)~lessthan~8} +auto={2}{U}{T}:name(Draw a card) draw:1 controller && flip(backside) restriction{type(*|myhand)~morethan~7} +text={2}{U}, {T}: Draw a card. If you have nine or more cards in hand, flip Jushi Apprentice. // Tomoya the Revealer mana={1}{U} type=Creature subtype=Human Wizard @@ -61185,10 +61260,11 @@ abilities=defender [/card] [card] name=Kaiso, Memory of Loyalty -doublefaced=kamiflip abilities=flying +doublefaced=kamiflip +backside=Faithful Squire auto={C(0/0,-1,Ki)}:prevent:999 target(creature) -text=Flying -- Remove a ki counter from Kaiso, Memory of Loyalty: Prevent all damage that would be dealt to target creature this turn. +text=Flying -- Remove a ki counter from Kaiso, Memory of Loyalty: Prevent all damage that would be dealt to target creature this turn. // Faithful Squire color=white type=Legendary Creature subtype=Spirit @@ -62507,9 +62583,10 @@ toughness=1 [card] name=Kenzo the Hardhearted doublefaced=kamiflip +backside=Bushi Tenderfoot abilities=double strike auto=bushido(2/2) -text=Double strike; bushido 2 (When this blocks or becomes blocked, it gets +2/+2 until end of turn.) +text=Double strike; bushido 2 (When this blocks or becomes blocked, it gets +2/+2 until end of turn.) // Bushi Tenderfoot color=white type=Legendary Creature subtype=Human Samurai @@ -62538,11 +62615,12 @@ toughness=6 [/card] [card] name=Kessig Forgemaster +backside=Flameheart Werewolf +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto=@combat(blocking,blocked) source(this) from(creature):damage:1 all(trigger[from]) -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Flameheart Werewolf) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Flameheart Werewolf) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Flameheart Werewolf) -text=Whenever Kessig Forgemaster blocks or becomes blocked by a creature, Kessig Forgemaster deals 1 damage to that creature. -- At the beginning of each upkeep, if no spells were cast last turn, transform Kessig Forgemaster. +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=Whenever Kessig Forgemaster blocks or becomes blocked by a creature, Kessig Forgemaster deals 1 damage to that creature. -- At the beginning of each upkeep, if no spells were cast last turn, transform Kessig Forgemaster. // Flameheart Werewolf mana={1}{R} type=Creature subtype=Human Shaman Werewolf @@ -62838,9 +62916,11 @@ type=Instant [/card] [card] name=Kindly Stranger -auto=@movedto(Moonmist|stack):name(Transform Human) flip(Demon-Possessed Witch) -auto=while(restriction{delirium}) {2}{b}:flip(Demon-Possessed Witch) -text=Delirium {2}{B}: Transform Kindly Stranger. Activate this ability only if there are four or more card types among cards in your graveyard. +backside=Demon-Possessed Witch +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=while(restriction{delirium}) {2}{b}:flip(backside) +text=Delirium {2}{B}: Transform Kindly Stranger. Activate this ability only if there are four or more card types among cards in your graveyard. // Demon-Possessed Witch mana={2}{B} type=Creature subtype=Human @@ -64371,10 +64451,11 @@ toughness=0 [/card] [card] name=Krallenhorde Howler +backside=Duskwatch Recruiter auto=lord(creature|mycastingzone) altercost(colorless, -1) -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Duskwatch Recruiter) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Duskwatch Recruiter) -text=Creature spells you cast cost {1} less to cast. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Howler. +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Creature spells you cast cost {1} less to cast. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Howler. // Duskwatch Recruiter type=Creature subtype=Werewolf color=green @@ -64383,10 +64464,11 @@ toughness=3 [/card] [card] name=Krallenhorde Killer +backside=Wolfbitten Captive auto={3}{G}:4/4 limit:1 -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Wolfbitten Captive) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Wolfbitten Captive) -text={3}{G}: Krallenhorde Killer gets +4/+4 until end of turn. Activate this ability only once each turn. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Moonscarred Werewolf. +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text={3}{G}: Krallenhorde Killer gets +4/+4 until end of turn. Activate this ability only once each turn. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Killer. // Wolfbitten Captive color=green type=Creature subtype=Werewolf @@ -64395,9 +64477,10 @@ toughness=2 [/card] [card] name=Krallenhorde Wantons -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Grizzled Outcasts) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Grizzled Outcasts) -text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Wantons. +backside=Grizzled Outcasts +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Wantons. // Grizzled Outcasts color=green type=Creature subtype=Werewolf @@ -64791,10 +64874,11 @@ subtype=Aura [card] name=Kruin Outlaw abilities=first strike -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Terror of Kruin Pass) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Terror of Kruin Pass) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Terror of Kruin Pass) -text=First strike -- At the beginning of each upkeep, if no spells were cast last turn, transform Kruin Outlaw. +backside=Terror of Kruin Pass +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=First strike -- At the beginning of each upkeep, if no spells were cast last turn, transform Kruin Outlaw. // Terror of Kruin Pass mana={1}{R}{R} type=Creature subtype=Human Rogue Werewolf @@ -65312,9 +65396,10 @@ type=Land [/card] [card] name=Lambholt Butcher -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Lambholt Pacifist) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Lambholt Pacifist) -text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Lambholt Butcher. +backside=Lambholt Pacifist +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Lambholt Butcher. // Lambholt Pacifist type=Creature subtype=Werewolf color=green @@ -65323,10 +65408,11 @@ toughness=4 [/card] [card] name=Lambholt Elder -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Silverpelt Werewolf) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Silverpelt Werewolf) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Silverpelt Werewolf) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Lambholt Elder. +backside=Silverpelt Werewolf +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Lambholt Elder. // Silverpelt Werewolf mana={2}{G} type=Creature subtype=Human Werewolf @@ -65335,12 +65421,13 @@ toughness=2 [/card] [card] name=Lambholt Pacifist +backside=Lambholt Butcher +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto=aslongas(creature[power>=4]|mybattlefield) cantattack <1 auto=aslongas(creature[power>=4]|mybattlefield) cantpwattack <1 -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Lambholt Butcher) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Lambholt Butcher) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Lambholt Butcher) -text=Lambholt Pacifist can't attack unless you control a creature with power 4 or greater. -- At the beginning of each upkeep, if no spells were cast last turn, transform Lambholt Pacifist. +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=Lambholt Pacifist can't attack unless you control a creature with power 4 or greater. -- At the beginning of each upkeep, if no spells were cast last turn, transform Lambholt Pacifist. // Lambholt Butcher mana={1}{G} type=Creature subtype=Human Shaman Werewolf @@ -68014,10 +68101,12 @@ toughness=4 [/card] [card] name=Lone Rider -abilities=first strike, lifelink -auto=@movedto(Moonmist|stack):name(Transform Human Knight) flip(It That Rides as One) -auto=@each endofturn restriction{compare(lifegain)~morethan~2}:flip(It That Rides as One) -text=First strike, lifelink -- At the beginning of the end step, if you gained 3 or more life this turn, transform Lone Rider. +abilities=first strike,lifelink +backside=It That Rides as One +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each endofturn restriction{compare(lifegain)~morethan~2}:flip(backside) +text=First strike, lifelink -- At the beginning of the end step, if you gained 3 or more life this turn, transform Lone Rider. // It That Rides as One mana={1}{W} type=Creature subtype=Human Knight @@ -68026,10 +68115,11 @@ toughness=1 [/card] [card] name=Lone Wolf of the Natterknolls -auto=@movedTo(*|opponentstack) restriction{during opponent turn}:draw:2 -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Hermit of the Natterknolls) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Hermit of the Natterknolls) -text=Whenever an opponent casts a spell during your turn, draw two cards. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Lone Wolf of the Natterknolls. +backside=Hermit of the Natterknolls +auto=@movedTo(*|opponentstack) restriction{during opponent turn}:name(Draw 2 cards) draw:2 controller +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Whenever an opponent casts a spell during your turn, draw two cards. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Lone Wolf of the Natterknolls. // Hermit of the Natterknolls type=Creature subtype=Werewolf color=green @@ -68189,9 +68279,10 @@ toughness=* [card] name=Lord of Lineage abilities=flying +backside=Bloodline Keeper auto=lord(other vampire|mybattlefield) 2/2 auto={T}:token(Vampire,Creature Vampire,2/2,black,flying) -text=Flying -- Other Vampire creatures you control get +2/+2. -- {T}: Put a 2/2 black Vampire creature token with flying onto the battlefield. +text=Flying -- Other Vampire creatures you control get +2/+2. -- {T}: Put a 2/2 black Vampire creature token with flying onto the battlefield. // Bloodline Keeper color=black type=Creature subtype=Vampire @@ -68673,9 +68764,11 @@ toughness=5 [card] name=Loyal Cathar abilities=vigilance -auto=@movedto(Moonmist|stack):name(Transform Human Soldier) flip(Unhallowed Cathar) -auto=_DIES_all(trigger[to]) transforms((,newability[moveTo(mybattlefield)],newability[flip(Unhallowed Cathar)])) forever -text=Vigilance -- When Loyal Cathar dies, return it to the battlefield transformed under your control at the beginning of the next end step. +backside=Unhallowed Cathar +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=_DIES_name(Return on battlefield) all(trigger[to]) transforms((,newability[phaseaction[endofturn once] moveTo(mybattlefield)],newability[phaseaction[endofturn once] flip(backside)])) forever +text=Vigilance -- When Loyal Cathar dies, return it to the battlefield transformed under your control at the beginning of the next end step. // Unhallowed Cathar mana={W}{W} type=Creature subtype=Human Soldier @@ -68779,7 +68872,8 @@ toughness=3 [card] name=Ludevic's Abomination abilities=trample -text=Trample +backside=Ludevic's Test Subject +text=Trample // Ludevic's Test Subject color=blue type=Creature subtype=Lizard Horror @@ -68789,9 +68883,12 @@ toughness=13 [card] name=Ludevic's Test Subject abilities=defender +backside=Ludevic's Abomination +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto={1}{U}:counter(0/0,1,Hatchling) -auto=@counteradded(0/0,1,Hatchling) from(this):this(counter{0/0.5.Hatchling}) removeallcounters(0/0,1,Hatchling) && flip(Ludevic's Abomination) -text={1}{U}: Put a hatchling counter on Ludevic's Test Subject. Then if there are five or more hatchling counters on it, remove all of them and transform it. +auto=@counteradded(0/0,1,Hatchling) from(this):this(counter{0/0.5.Hatchling}) removeallcounters(0/0,1,Hatchling) && flip(backside) +text={1}{U}: Put a hatchling counter on Ludevic's Test Subject. Then if there are five or more hatchling counters on it, remove all of them and transform it. // Ludevic's Abomination mana={1}{U} type=Creature subtype=Lizard @@ -68982,8 +69079,9 @@ toughness=2 [/card] [card] name=Lunarch Inquisitors +backside=Avacynian Missionaries auto=may (blink)forsrc target(creature) -text=When this creature transforms into Lunarch Inquisitors, you may exile another target creature until Lunarch Inquisitors leaves the battlefield. +text=When this creature transforms into Lunarch Inquisitors, you may exile another target creature until Lunarch Inquisitors leaves the battlefield. // Avacynian Missionaries type=Creature subtype=Human Cleric color=white @@ -71234,6 +71332,7 @@ toughness=4 [/card] [card] name=Markov's Servant +backside=Chosen of Markov color=black type=Creature subtype=Vampire @@ -72101,11 +72200,12 @@ type=Enchantment [/card] [card] name=Mayor of Avabruck +backside=Howlpack Alpha +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto=lord(other human|mybattlefield) 1/1 -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Howlpack Alpha) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Howlpack Alpha) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Howlpack Alpha) -text=Other Human creatures you control get +1/+1. -- At the beginning of each upkeep, if no spells were cast last turn, transform Mayor of Avabruck. +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=Other Human creatures you control get +1/+1. -- At the beginning of each upkeep, if no spells were cast last turn, transform Mayor of Avabruck. // Howlpack Alpha mana={1}{G} type=Creature subtype=Human Advisor Werewolf @@ -72731,9 +72831,10 @@ toughness=1 [/card] [card] name=Merciless Predator -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Reckless Waif) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Reckless Waif) -text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Merciless Predator. +backside=Reckless Waif +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Merciless Predator. // Reckless Waif color=red type=Creature subtype=Werewolf @@ -75836,10 +75937,11 @@ toughness=2 [/card] [card] name=Mondronen Shaman -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Tovolar's Magehunter) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Tovolar's Magehunter) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Tovolar's Magehunter) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Mondronen Shaman. +backside=Tovolar's Magehunter +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Mondronen Shaman. // Tovolar's Magehunter mana={3}{R} type=Creature subtype=Human Werewolf Shaman @@ -76093,9 +76195,10 @@ subtype=Island [/card] [card] name=Moonrise Intruder -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Village Messenger) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Village Messenger) -text=Menace (This creature can't be blocked except by two or more creatures.) -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Moonrise Intruder. +backside=Village Messenger +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Menace (This creature can't be blocked except by two or more creatures.) -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Moonrise Intruder. // Village Messenger abilities=menace type=Creature subtype=Werewolf @@ -76106,10 +76209,11 @@ toughness=2 [card] name=Moonscarred Werewolf auto=vigilance +backside=Scorned Villager auto={T}:Add{G}{G} -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Scorned Villager) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Scorned Villager) -text={T}: Add {G}{G} to your mana pool. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Moonscarred Werewolf. +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text={T}: Add {G}{G} to your mana pool. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Moonscarred Werewolf. // Scorned Villager color=green type=Creature subtype=Werewolf @@ -78546,11 +78650,12 @@ toughness=1 [card] name=Neck Breaker abilities=trample +backside=Breakneck Rider auto=lord(creature[attacking]|mybattlefield) 1/0 auto=lord(creature[attacking]|mybattlefield) trample -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Breakneck Rider) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Breakneck Rider) -text=Attacking creatures you control get +1/+0 and have trample. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Neck Breaker. +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Attacking creatures you control get +1/+0 and have trample. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Neck Breaker. // Breakneck Rider type=Creature subtype=Werewolf color=red @@ -79644,10 +79749,11 @@ toughness=2 [/card] [card] name=Nightfall Predator +backside=Daybreak Ranger auto={R}{T}:target(creature) dynamicability -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Daybreak Ranger) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Daybreak Ranger) -text={R},{T}: Nightfall Predator fights target creature. (Each deals damage equal to its power to the other.) -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Nightfall Predator. +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text={R},{T}: Nightfall Predator fights target creature. (Each deals damage equal to its power to the other.) -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Nightfall Predator. // Daybreak Ranger color=green type=Creature subtype=Werewolf @@ -82143,9 +82249,10 @@ type=Sorcery [/card] [card] name=One of the Pack -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Solitary Hunter) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Solitary Hunter) -text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform One of the Pack. +backside=Solitary Hunter +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform One of the Pack. // Solitary Hunter type=Creature subtype=Werewolf color=green @@ -85220,9 +85327,11 @@ subtype=Equipment [card] name=Perfected Form abilities=flying -text=Flying +backside=Aberrant Researcher +text=Flying // Aberrant Researcher type=Creature subtype=Insect Horror +color=blue power=5 toughness=4 [/card] @@ -86748,11 +86857,13 @@ type=Sorcery [/card] [card] name=Pious Evangel +backside=Wayward Disciple +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto=life:1 auto=@movedto(creature|mybattlefield):life:1 -auto=@movedto(Moonmist|stack):name(Transform Human Cleric) flip(Wayward Disciple) -auto={2}{T}{S(other *|mybattlefield)}:flip(Wayward Disciple) -text=Whenever Pious Evangel or another creature enters the battlefield under your control, you gain 1 life. -- {2}, {T}, Sacrifice another permanent: Transform Pious Evangel. +auto={2}{T}{S(other *|mybattlefield)}:flip(backside) +text=Whenever Pious Evangel or another creature enters the battlefield under your control, you gain 1 life. -- {2}, {T}, Sacrifice another permanent: Transform Pious Evangel. // Wayward Disciple mana={2}{W} type=Creature subtype=Human Cleric @@ -91650,9 +91761,10 @@ toughness=6 [/card] [card] name=Rampaging Werewolf -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Tormented Pariah) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Tormented Pariah) -text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Rampaging Werewolf. +backside=Tormented Pariah +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Rampaging Werewolf. // Tormented Pariah color=red type=Creature subtype=Werewolf @@ -92078,11 +92190,12 @@ type=Land [card] name=Ravager of the Fells abilities=trample +backside=Huntmaster of the Fells auto=damage:2 opponent -auto=may damage:2 target(creature|opponentbattlefield) -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Huntmaster of the Fells) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Huntmaster of the Fells) -text=Whenever this creature transforms into Ravager of the Fells, it deals 2 damage to target opponent and 2 damage to up to one target creature that opponent controls. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ravager of the Fells. +auto=may name(Damage opponent creature) damage:2 target(creature|opponentbattlefield) +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Whenever this creature transforms into Ravager of the Fells, it deals 2 damage to target opponent and 2 damage to up to one target creature that opponent controls. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ravager of the Fells. // Huntmaster of the Fells color=red,green type=Creature subtype=Werewolf @@ -93006,10 +93119,11 @@ type=Instant [/card] [card] name=Reckless Waif -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Merciless Predator) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Merciless Predator) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Merciless Predator) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Reckless Waif. +backside=Merciless Predator +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Reckless Waif. // Merciless Predator mana={R} type=Creature subtype=Human Rogue Werewolf @@ -98103,11 +98217,12 @@ toughness=3 [card] name=Sage of Ancient Lore anyzone=type:*:myhand/type:*:myhand cdaactive -auto=draw:1 -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Werewolf of Ancient Hunger) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Werewolf of Ancient Hunger) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Werewolf of Ancient Hunger) -text=Sage of Ancient Lore's power and toughness are each equal to the number of cards in your hand. -- When Sage of Ancient Lore enters the battlefield, draw a card. -- At the beginning of each upkeep, if no spells were cast last turn, transform Sage of Ancient Lore. +backside=Werewolf of Ancient Hunger +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=name(Draw a card) draw:1 controller +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=Sage of Ancient Lore's power and toughness are each equal to the number of cards in your hand. -- When Sage of Ancient Lore enters the battlefield, draw a card. -- At the beginning of each upkeep, if no spells were cast last turn, transform Sage of Ancient Lore. // Werewolf of Ancient Hunger mana={4}{G} type=Creature subtype=Human Shaman Werewolf @@ -99690,8 +99805,9 @@ toughness=2 [card] name=Scarmaker doublefaced=kamiflip -auto={C(0/0,-1,Ki)}:fear target(creature) -text=Remove a ki counter from Scarmaker: Target creature gains fear until end of turn. (It can't be blocked except by artifact creatures and/or black creatures.) +backside=Hired Muscle +auto={C(0/0,-1,Ki)}:name(Creature gains fear) fear target(creature) +text=Remove a ki counter from Scarmaker: Target creature gains fear until end of turn. (It can't be blocked except by artifact creatures and/or black creatures.) // Hired Muscle color=black type=Legendary Creature subtype=Spirit @@ -100111,11 +100227,12 @@ toughness=7 [/card] [card] name=Scorned Villager +backside=Moonscarred Werewolf +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto={T}:Add{G} -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Moonscarred Werewolf) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Moonscarred Werewolf) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Moonscarred Werewolf) -text={T}: Add {G} to your mana pool. -- At the beginning of each upkeep, if no spells were cast last turn, transform Scorned Villager. +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text={T}: Add {G} to your mana pool. -- At the beginning of each upkeep, if no spells were cast last turn, transform Scorned Villager. // Moonscarred Werewolf mana={1}{G} type=Creature subtype=Human Werewolf @@ -105715,10 +105832,11 @@ subtype=Equipment [/card] [card] name=Silverpelt Werewolf -auto=@combatdamaged(player) from(this):draw:1 controller -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Lambholt Elder) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Lambholt Elder) -text=Whenever Silverpelt Werewolf deals combat damage to a player, draw a card. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Silverpelt Werewolf. +backside=Lambholt Elder +auto=@combatdamaged(player) from(this):name(Draw a card) draw:1 controller +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Whenever Silverpelt Werewolf deals combat damage to a player, draw a card. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Silverpelt Werewolf. // Lambholt Elder color=green type=Creature subtype=Werewolf @@ -108959,10 +109077,11 @@ type=Enchantment [/card] [card] name=Solitary Hunter -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(One of the Pack) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(One of the Pack) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(One of the Pack) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Solitary Hunter. +backside=One of the Pack +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Solitary Hunter. // One of the Pack mana={3}{G} type=Creature subtype=Human Warrior Werewolf @@ -114793,9 +114912,11 @@ type=Instant [card] name=Student of Elements doublefaced=kamiflip -auto=@movedto(Moonmist|stack):name(Transform Human Wizard) flip(Tobita, Master of Winds) -auto=this( cantargetcard(*[flying]) ) flip(Tobita, Master of Winds) -text=When Student of Elements has flying, flip it. +backside=Tobita, Master of Winds +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=this(cantargetcard(*[flying])) flip(backside) +text=When Student of Elements has flying, flip it. // Tobita, Master of Winds mana={1}{U} type=Creature subtype=Human Wizard @@ -119207,10 +119328,11 @@ toughness=3 [card] name=Terror of Kruin Pass abilities=double strike +backside=Kruin Outlaw auto=lord(werewolf|mybattlefield) menace -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Kruin Outlaw) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Kruin Outlaw) -text=Double strike -- Each Werewolf you control can't be blocked except by two or more creatures. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Terror of Kruin Pass. +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Double strike -- Each Werewolf you control can't be blocked except by two or more creatures. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Terror of Kruin Pass. // Kruin Outlaw type=Creature subtype=Werewolf power=3 @@ -120571,7 +120693,8 @@ toughness=2 [card] name=Thraben Militia abilities=trample -text=Trample +backside=Thraben Sentry +text=Trample // Thraben Sentry color=white type=Creature subtype=Human Soldier @@ -120589,9 +120712,11 @@ toughness=5 [card] name=Thraben Sentry abilities=vigilance -auto=@movedto(Moonmist|stack):name(Transform Human Soldier) flip(Thraben Militia) -auto=@movedTo(creature|graveyard) from(mybattlefield):may flip(Thraben Militia) -text=Vigilance -- Whenever another creature you control dies, you may transform Thraben Sentry. +backside=Thraben Militia +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@movedTo(creature|graveyard) from(mybattlefield):may flip() +text=Vigilance -- Whenever another creature you control dies, you may transform Thraben Sentry. // Thraben Militia mana={3}{W} type=Creature subtype=Human Soldier @@ -121577,9 +121702,10 @@ toughness=6 [card] name=Timber Shredder abilities=trample -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Hinterland Logger) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Hinterland Logger) -text=Trample -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Timber Shredder. +backside=Hinterland Logger +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Trample -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Timber Shredder. // Hinterland Logger type=Creature subtype=Werewolf color=green @@ -122060,9 +122186,10 @@ toughness=4 [card] name=Tobita, Master of Winds doublefaced=kamiflip +backside=Student of Elements auto=lord(creature|myBattlefield) flying -text=Creatures you control have flying. -mana={1}{U} +text=Creatures you control have flying. // Student of Elements +color=blue type=Legendary Creature subtype=Human Wizard power=3 @@ -122229,8 +122356,9 @@ toughness=5 [card] name=Tomoya the Revealer doublefaced=kamiflip -auto={3}{U}{U}{T}:foreach(*|myhand) draw:1 target(player) -text={3}{U}{U}, {T}: Target player draws X cards, where X is the number of cards in your hand. +backside=Jushi Apprentice +auto={3}{U}{U}{T}:name(Player draws cards) target(player) draw:phandcount +text={3}{U}{U}, {T}: Target player draws X cards, where X is the number of cards in your hand. // Jushi Apprentice color=blue type=Legendary Creature subtype=Human Wizard @@ -122441,10 +122569,11 @@ toughness=1 [/card] [card] name=Tormented Pariah -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Rampaging Werewolf) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Rampaging Werewolf) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Rampaging Werewolf) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Tormented Pariah. +backside=Rampaging Werewolf +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Tormented Pariah. // Rampaging Werewolf mana={3}{R} type=Creature subtype=Human Warrior Werewolf @@ -122793,10 +122922,11 @@ subtype=Aura [/card] [card] name=Tovolar's Magehunter -auto=@movedTo(*|opponentstack):damage:2 opponent -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Mondronen Shaman) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Mondronen Shaman) -text=Whenever an opponent casts a spell, Tovolar's Magehunter deals 2 damage to that player. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Tovolar's Magehunter. +backside=Mondronen Shaman +auto=@movedTo(*|opponentstack):name(Deal 2 damage) damage:2 opponent +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Whenever an opponent casts a spell, Tovolar's Magehunter deals 2 damage to that player. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Tovolar's Magehunter. // Mondronen Shaman color=red type=Creature subtype=Werewolf @@ -122926,9 +123056,11 @@ toughness=4 [/card] [card] name=Town Gossipmonger -auto=@movedto(Moonmist|stack):name(Transform Human) flip(Incited Rabble) -auto={T}{T(other creature|mybattlefield)}:flip(Incited Rabble) -text={T}, Tap an untapped creature you control: Transform Town Gossipmonger. +backside=Incited Rabble +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto={T}{T(other creature[-tapped]|mybattlefield)}:flip(backside) +text={T}, Tap an untapped creature you control: Transform Town Gossipmonger. // Incited Rabble mana={W} type=Creature subtype=Human @@ -125229,11 +125361,12 @@ type=Instant [/card] [card] name=Ulrich of the Krallenhorde -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Ulrich, Uncontested Alpha) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Ulrich, Uncontested Alpha) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Ulrich, Uncontested Alpha) +backside=Ulrich, Uncontested Alpha +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) auto=target(creature) 4/4 ueot -text=Whenever this creature enters the battlefield or transforms into Ulrich of the Krallenhorde, target creature gets +4/+4 until end of turn. -- At the beginning of each upkeep, if no spells were cast last turn, transform Ulrich of the Krallenhorde. +text=Whenever this creature enters the battlefield or transforms into Ulrich of the Krallenhorde, target creature gets +4/+4 until end of turn. -- At the beginning of each upkeep, if no spells were cast last turn, transform Ulrich of the Krallenhorde. // Ulrich, Uncontested Alpha mana={3}{R}{G} type=Legendary Creature subtype=Human Werewolf @@ -125242,12 +125375,14 @@ toughness=4 [/card] [card] name=Ulrich, Uncontested Alpha -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Ulrich of the Krallenhorde) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Ulrich of the Krallenhorde) -auto=may target(creature[-werewolf]|opponentbattlefield) dynamicability -text=Whenever this creature transforms into Ulrich, Uncontested Alpha, you may have it fight target non-Werewolf creature you don't control. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ulrich, Uncontested Alpha. +backside=Ulrich of the Krallenhorde +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +auto=may name(Fight a creature) target(creature[-werewolf]|opponentbattlefield) dynamicability +text=Whenever this creature transforms into Ulrich, Uncontested Alpha, you may have it fight target non-Werewolf creature you don't control. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ulrich, Uncontested Alpha. // Ulrich of the Krallenhorde type=Legendary Creature subtype=Werewolf +color=red,green power=6 toughness=6 [/card] @@ -125324,10 +125459,11 @@ type=Enchantment [/card] [card] name=Ulvenwald Mystics -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Ulvenwald Primordials) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Ulvenwald Primordials) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Ulvenwald Primordials) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Ulvenwald Mystics. +backside=Ulvenwald Primordials +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Ulvenwald Mystics. // Ulvenwald Primordials mana={2}{G}{G} type=Creature subtype=Human Shaman Werewolf @@ -125346,10 +125482,11 @@ toughness=6 [/card] [card] name=Ulvenwald Primordials +backside=Ulvenwald Mystics auto={G}:regenerate -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Ulvenwald Mystics) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Ulvenwald Mystics) -text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ulvenwald Primordials. +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ulvenwald Primordials. // Ulvenwald Mystics color=green type=Creature subtype=Werewolf @@ -125879,8 +126016,9 @@ type=Enchantment [card] name=Unhallowed Cathar abilities=cantblock +backside=Loyal Cathar color=black -text=Unhallowed Cathar can't block. +text=Unhallowed Cathar can't block. // Loyal Cathar type=Creature subtype=Zombie Soldier power=2 @@ -125906,8 +126044,9 @@ type=Sorcery [/card] [card] name=Unholy Fiend +backside=Cloistered Youth auto=@each my end:life:-1 controller -text=At the beginning of your end step, you lose 1 life. +text=At the beginning of your end step, you lose 1 life. // Cloistered Youth type=Creature subtype=Horror color=black @@ -128873,9 +129012,11 @@ type=Instant [/card] [card] name=Vildin-Pack Alpha -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Geier Reach Bandit) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Geier Reach Bandit) -text=Whenever a Werewolf enters the battlefield under your control, you may transform it. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Vildin-Pack Alpha. +backside=Geier Reach Bandit +auto=@movedto(werewolf[hasbackside]|mybattlefield):name(Transforms werewolf) all(trigger[to]) transforms((,newability[if cantargetcard(*[fresh]|*) then may name(Transform Human Werewolf) name(Transform Human Werewolf) flip(backside) limit:1])) forever +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Whenever a Werewolf enters the battlefield under your control, you may transform it. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Vildin-Pack Alpha. // Geier Reach Bandit type=Creature subtype=Werewolf color=red @@ -128988,10 +129129,11 @@ toughness=1 [card] name=Village Ironsmith abilities=first strike -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Ironfang) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Ironfang) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Ironfang) -text=First Strike -- At the beginning of each upkeep, if no spells were cast last turn, transform Village Ironsmith. +backside=Ironfang +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=First Strike -- At the beginning of each upkeep, if no spells were cast last turn, transform Village Ironsmith. // Ironfang mana={1}{R} type=Creature subtype=Human Werewolf @@ -129001,10 +129143,11 @@ toughness=1 [card] name=Village Messenger abilities=haste -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Moonrise Intruder) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Moonrise Intruder) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Moonrise Intruder) -text=Haste -- At the beginning of each upkeep, if no spells were cast last turn, transform Village Messenger. +backside=Moonrise Intruder +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=Haste -- At the beginning of each upkeep, if no spells were cast last turn, transform Village Messenger. // Moonrise Intruder mana={R} type=Creature subtype=Human Werewolf @@ -129024,10 +129167,11 @@ toughness=5 [/card] [card] name=Villagers of Estwald -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Howlpack of Estwald) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Howlpack of Estwald) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Howlpack of Estwald) -text=At the beginning of each upkeep, if no spells were cast last turn, transform Villagers of Estwald. +backside=Howlpack of Estwald +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text=At the beginning of each upkeep, if no spells were cast last turn, transform Villagers of Estwald. // Howlpack of Estwald mana={2}{G} type=Creature subtype=Human Werewolf @@ -132581,10 +132725,12 @@ toughness=4 [/card] [card] name=Wayward Disciple -auto=@movedto(creature|mygraveyard):target(opponent) life:-1 && life:1 controller -text=Whenever Wayward Disciple or another creature you control dies, target opponent loses 1 life and you gain 1 life. +backside=Pious Evangel +auto=@movedto(creature|mygraveyard):name(Gain 1 life) life:1 controller && life:-1 opponent +text=Whenever Wayward Disciple or another creature you control dies, target opponent loses 1 life and you gain 1 life. // Pious Evangel type=Creature subtype=Human Cleric +color=black power=2 toughness=4 [/card] @@ -133060,21 +133206,24 @@ toughness=1 [card] name=Werewolf of Ancient Hunger abilities=vigilance,trample +backside=Sage of Ancient Lore anyzone=type:*:hand/type:*:hand cdaactive -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Sage of Ancient Lore) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Sage of Ancient Lore) -text=Vigilance, trample -- Werewolf of Ancient Hunger's power and toughness are each equal to the total number of cards in all players' hands. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Werewolf of Ancient Hunger. +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Vigilance, trample -- Werewolf of Ancient Hunger's power and toughness are each equal to the total number of cards in all players' hands. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Werewolf of Ancient Hunger. // Sage of Ancient Lore type=Creature subtype=Werewolf +color=green power=* toughness=* [/card] [card] name=Werewolf Ransacker -auto=may target(artifact) destroy and!(if cantargetcard(artifact|nonbattlezone) then damage:3 targetcontroller)! -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Afflicted Deserter) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Afflicted Deserter) -text=Whenever this creature transforms into Werewolf Ransacker, you may destroy target artifact. If that artifact is put into a graveyard this way, Werewolf Ransacker deals 3 damage to that artifact's controller. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Werewolf Ransacker. +backside=Afflicted Deserter +auto=may target(artifact) destroy and!( if cantargetcard(artifact|graveyard) then damage:3 targetcontroller )! +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Whenever this creature transforms into Werewolf Ransacker, you may destroy target artifact. If that artifact is put into a graveyard this way, Werewolf Ransacker deals 3 damage to that artifact's controller. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Werewolf Ransacker. // Afflicted Deserter type=Creature subtype=Werewolf color=red @@ -133101,9 +133250,10 @@ type=Land [/card] [card] name=Westvale Cult Leader +backside=Hanweir Militia Captain anyzone=type:creature:mybattlefield/type:creature:mybattlefield cdaactive auto=@each my endofturn:token(Human Cleric,Creature Human Cleric,1/1,white,black) -text=Westvale Cult Leader's power and toughness are each equal to the number of creatures you control. -- At the beginning of your end step, put a 1/1 white and black Human Cleric creature token onto the battlefield. +text=Westvale Cult Leader's power and toughness are each equal to the number of creatures you control. -- At the beginning of your end step, put a 1/1 white and black Human Cleric creature token onto the battlefield. // Hanweir Militia Captain type=Creature subtype=Human Cleric color=white @@ -133895,10 +134045,11 @@ toughness=4 [card] name=Wildblood Pack abilities=trample +backside=Instigator Gang auto=lord(creature[attacking]|mybattlefield) 3/0 -auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(Afflicted Deserter) -auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(Instigator Gang) -text=Trample -- Attacking creatures you control get +3/+0. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Wildblood Pack. +auto=@each upkeep restriction{lastturn(*|mystack)~morethan~1,lastturn(*|opponentstack)~lessthan~2}:name(Transform Werewolf) flip(backside) +auto=@each upkeep restriction{lastturn(*|opponentstack)~morethan~1}:name(Transform Werewolf) flip(backside) +text=Trample -- Attacking creatures you control get +3/+0. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Wildblood Pack. // Instigator Gang color=red type=Creature subtype=Werewolf @@ -135136,11 +135287,12 @@ color=green [/card] [card] name=Wolfbitten Captive +backside=Krallenhorde Killer +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) auto={1}{G}:2/2 limit:1 -auto=if cantargetcard(*[fresh]|*) then if compare(isflipped)~equalto~0 then if type(Vildin-Pack Alpha|mybattlefield)~morethan~0 then may name(Transform Human Werewolf) name(Transform Human Werewolf) name(Transform Human Werewolf) flip(Krallenhorde Killer) -auto=@movedto(Moonmist|stack):name(Transform Human Werewolf) flip(Krallenhorde Killer) -auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(Krallenhorde Killer) -text={1}{G}: Wolfbitten Captive gets +2/+2 until end of turn. Activate this ability only once each turn. -- At the beginning of each upkeep, if no spells were cast last turn, transform Wolfbitten Captive. +auto=@each upkeep restriction{lastturn(*|stack)~lessthan~1}:name(Transform Human Werewolf) flip(backside) +text={1}{G}: Wolfbitten Captive gets +2/+2 until end of turn. Activate this ability only once each turn. -- At the beginning of each upkeep, if no spells were cast last turn, transform Wolfbitten Captive. // Krallenhorde Killer mana={G} type=Creature subtype=Human Werewolf diff --git a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt index 9baed5497..9e849f6aa 100644 --- a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt +++ b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt @@ -1,7 +1,7 @@ grade=borderline #Planeswalkers Primitives Pack for Wagic the Homebrew. #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#We sorted this in alphabetical order - Luruz & Vitty85 07-08-2021 +#We sorted this in alphabetical order - Luruz & Vitty85 04-09-2021 [card] name=Abian, Luvion Usurper auto=counter(0/0,5,loyalty) @@ -557,11 +557,12 @@ subtype=Chandra [/card] [card] name=Chandra, Roaring Flame -auto=counter(0/0.4.loyalty) +backside=Chandra, Fire of Kaladesh +auto=counter(0/0,4,loyalty) auto={C(0/0,1,Loyalty)}:name(+1: Deals 2 damage to player or planeswalker) damage:2 target(player,planeswalker) auto={C(0/0,-2,Loyalty)}:name(-2: Deals 2 damage to creature) damage:2 target(creature) -auto={C(0/0,-7,Loyalty)}:name(-7: Deals 6 damage with Emblem) damage:6 opponent && emblem transforms((,newability[@each opponent upkeep:damage:3 opponent])) forever dontremove -text=+1: Chandra, Roaring Flame deals 2 damage to target player or planeswalker. -- −2: Chandra, Roaring Flame deals 2 damage to target creature. -- −7: Chandra, Roaring Flame deals 6 damage to each opponent. Each player dealt damage this way gets an emblem with “At the beginning of your upkeep, this emblem deals 3 damage to you.” +auto={C(0/0,-7,Loyalty)}:name(-7: Deals 6 damage with Emblem) emblem transforms((newability[damage:6 opponent],newability[@each opponent upkeep:damage:3 opponent])) forever dontremove +text=+1: Chandra, Roaring Flame deals 2 damage to target player or planeswalker. -- −2: Chandra, Roaring Flame deals 2 damage to target creature. -- −7: Chandra, Roaring Flame deals 6 damage to each opponent. Each player dealt damage this way gets an emblem with "At the beginning of your upkeep, this emblem deals 3 damage to you." // Chandra, Fire of Kaladesh type=Legendary Planeswalker subtype=Chandra color=red @@ -904,22 +905,23 @@ subtype=Garruk [/card] [card] name=Garruk Relentless +backside=Garruk, the Veil-Cursed auto=counter(0/0,3,loyalty) -auto=this(counter{0/0.1.loyalty}<3) flip(Garruk, the Veil-Cursed) -auto={0}:name(+0: Garruk fights target creature) target(creature) dynamicability damage:3 +auto=this(counter{0/0.1.loyalty}<3) flip(backside) +auto={0}:name(+0: Garruk fights a creature) target(creature) dynamicability && damage:3 auto={0}:name(+0: Create a 2/2 Wolf) token(Wolf,Creature Wolf,2/2,green) -text=When Garruk Relentless has two or fewer loyalty counters on him, transform him. -- 0: Garruk Relentless deals 3 damage to target creature. That creature deals damage equal to its power to him. -- 0: Put a 2/2 green Wolf creature token onto the battlefield. +text=When Garruk Relentless has two or fewer loyalty counters on him, transform him. -- 0: Garruk Relentless deals 3 damage to target creature. That creature deals damage equal to its power to him. -- 0: Put a 2/2 green Wolf creature token onto the battlefield. // Garruk, the Veil-Cursed mana={3}{G} type=Legendary Planeswalker subtype=Garruk [/card] [card] name=Garruk, the Veil-Cursed -aicode=activate target(creature|mylibrary) moveto(myhand) +backside=Garruk Relentless auto={C(0/0,1,Loyalty)}:name(+1: Create a 1/1 Wolf) token(Wolf,Creature Wolf,1/1,black,deathtouch) -auto={C(0/0,-1,Loyalty)}{S(creature|myBattlefield)}:name(-1: Search creature) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(<1>creature|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>*|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend -auto={C(0/0,-3,Loyalty)}:name(-3: Creatures gets +X/+X and trample) all(creature|mybattlefield) trample ueot && all(creature|mybattlefield) foreach(creature|mygraveyard) 1/1 ueot -text=+1: Put a 1/1 black Wolf creature token with deathtouch onto the battlefield. -- -1: Sacrifice a creature. If you do, search your library for a creature card, reveal it, put it into your hand, then shuffle your library. -- -3: Creatures you control gain trample and get +X/+X until end of turn, where X is the number of creature cards in your graveyard. +auto={C(0/0,-1,Loyalty)}{S(creature|myBattlefield)}:name(-1: Search creature) target(creature|mylibrary) moveto(myhand) and!( shuffle )! +auto={C(0/0,-3,Loyalty)}:name(-3: Creatures gets +X/+X and trample) all(creature|mybattlefield) transforms((,newability[trample],newability[type:creature:mygraveyard/type:creature:mygraveyard])) ueot +text=+1: Put a 1/1 black Wolf creature token with deathtouch onto the battlefield. -- -1: Sacrifice a creature. If you do, search your library for a creature card, reveal it, put it into your hand, then shuffle your library. -- -3: Creatures you control gain trample and get +X/+X until end of turn, where X is the number of creature cards in your graveyard. // Garruk Relentless type=Legendary Planeswalker subtype=Garruk color=black,green @@ -1052,11 +1054,12 @@ subtype=Gideon [/card] [card] name=Gideon, Battle-Forged +backside=Kytheon, Hero of Akros auto=counter(0/0,3,loyalty) auto={C(0/0,2,Loyalty)}:name(+2: Target creature attacks Gideon) target(creature|opponentbattlefield) mustattack uynt -auto={C(0/0,-1,Loyalty)}:name(+1: Target creature is indestructible and untap it) untap target(creature) && indestructible uynt -auto={C(0/0,0,Loyalty)}:name(+0: Transforms Gideon into a 4/4 Human Indestructible) transforms((Human Soldier Creature Planeswalker,setpower=4,settoughness=4,indestructible)) ueot && transforms((,newability[preventAllDamage to(this)])) ueot -text=+2: Up to one target creature an opponent controls attacks Gideon, Battle-Forged during its controller’s next turn if able. -- +1: Until your next turn, target creature gains indestructible. Untap that creature. -- 0: Until end of turn, Gideon, Battle-Forged becomes a 4/4 Human Soldier creature with indestructible that’s still a planeswalker. Prevent all damage that would be dealt to him this turn. +auto={C(0/0,-1,Loyalty)}:name(+1: Target creature is indestructible and untap it) target(creature) transforms((,newability[untap],newability[indestructible])) uynt +auto={C(0/0,0,Loyalty)}:name(+0: Transforms Gideon into a 4/4 Human Indestructible) transforms((Human Soldier Creature,setpower=4,settoughness=4,newability[indestructible],newability[preventAllDamage to(this)])) ueot +text=+2: Up to one target creature an opponent controls attacks Gideon, Battle-Forged during its controller’s next turn if able. -- +1: Until your next turn, target creature gains indestructible. Untap that creature. -- 0: Until end of turn, Gideon, Battle-Forged becomes a 4/4 Human Soldier creature with indestructible that’s still a planeswalker. Prevent all damage that would be dealt to him this turn. // Kytheon, Hero of Akros type=Legendary Planeswalker subtype=Gideon color=white @@ -1307,12 +1310,13 @@ subtype=Jace [/card] [card] name=Jace, Telepath Unbound +backside=Jace, Vryn's Prodigy auto=counter(0/0,5,loyalty) auto={C(0/0,1,Loyalty)}:name(+1: don't target any creature) donothing auto={C(0/0,1,Loyalty)}:name(+1: target creature gets -2/0) target(creature) -2/0 uynt auto={C(0/0,-3,Loyalty)}:name(-3: choose an instant or sorcery you may from graveyard) target(*[instant;sorcery]|mygraveyard) transforms((,newability[canplayfromgraveyard],newability[gainedexiledeath])) ueot auto={C(0/0,-9,Loyalty)}:name(-9: emblem mills opponent cards) emblem transforms((,newability[@movedTo(*|mystack):deplete:5 opponent])) forever dontremove -text=+1: Up to one target creature gets -2/-0 until your next turn. -- -3: You may cast target instant or sorcery card from your graveyard this turn. If that card would be put into your graveyard this turn, exile it instead. -- -9: You get an emblem with "Whenever you cast a spell, target opponent puts the top five cards of his or her library into his or her graveyard." +text=+1: Up to one target creature gets -2/-0 until your next turn. -- -3: You may cast target instant or sorcery card from your graveyard this turn. If that card would be put into your graveyard this turn, exile it instead. -- -9: You get an emblem with "Whenever you cast a spell, target opponent puts the top five cards of his or her library into his or her graveyard." // Jace, Vryn's Prodigy type=Legendary Planeswalker subtype=Jace color=blue @@ -1657,6 +1661,7 @@ subtype=Liliana [/card] [card] name=Liliana, Defiant Necromancer +backside=Liliana, Heretical Healer auto=counter(0/0,3,Loyalty) auto={C(0/0,2,Loyalty)}:name(+2: Each player discards a card) transforms((,newability[ability$!name(Discard a card) name(Discard a card) notatarget(*|myhand) reject!$ controller],newability[ability$!name(Discard a card) name(Discard a card) notatarget(*|myhand) reject!$ opponent])) oneshot auto={C(0/0,0,Loyalty)}:name(-0: Reanimate non-legendary creature with manacost 0) moveto(mybattlefield) target(creature[-legendary;manacost=0]|mygraveyard) @@ -1805,6 +1810,7 @@ subtype=Lukka [/card] [card] name=Lukka, Wayward Bonder +backside=Mila, Crafty Companion auto=counter(0/0,5,loyalty) auto={C(0/0,1,Loyalty)}:name(+1: Don't discard any card) donothing auto={C(0/0,1,Loyalty)}:name(+1: Discard and draw) target(*|myhand) transforms((,newability[reject],newability[if cantargetcard(*[creature]|*) then draw:2 else draw:1])) oneshot @@ -1820,7 +1826,7 @@ name=Mordenkainen auto=counter(0/0,5,Loyalty) auto={C(0/0,2,Loyalty)}:name(+2: Draw 2 cards) draw:2 && transforms((,newability[name(Put on bottom) target(*|myhand) bottomoflibrary])) forever auto={C(0/0,-2,Loyalty)}:name(-2: Create Dog Illusion) token(Dog Mor) -auto={C(0/0,-10,Loyalty)}:name(-10: Exchange hand and library) token(Mordenkainen Emblem,Emblem,0/0,shroud,indestructible) and!( transforms((,newability[nomaxhand],newability[all(*|myhand) moveto(myreveal) and!( all(*|mylibrary) moveto(myhand) and!( all(*|myreveal) moveto(mylibrary) and!( shuffle )! )! )!])) forever +auto={C(0/0,-10,Loyalty)}:name(-10: Exchange hand and library) token(Mordenkainen Emblem,Emblem,0/0,shroud,indestructible,notrigger) and!( transforms((,newability[nomaxhand],newability[all(*|myhand) moveto(myreveal) and!( all(*|mylibrary) moveto(myhand) and!( all(*|myreveal) moveto(mylibrary) and!( shuffle )! )! )!])) forever text=+2: Draw two cards, then put a card from your hand on the bottom of your library. -- -2: Create a blue Dog Illusion creature token with "This creature’s power and toughness are each equal to twice the number of cards in your hand." -- -10: Exchange your hand and library, then shuffle. You get an emblem with "You have no maximum hand size." mana={4}{U}{U} type=Legendary Planeswalker @@ -2000,13 +2006,14 @@ subtype=Bolas [/card] [card] name=Nicol Bolas, the Arisen +backside=Nicol Bolas, the Ravager auto=counter(0/0,7,Loyalty) auto={C(0/0,2,Loyalty)}:name(+2: Draw two cards) draw:2 controller auto={C(0/0,-3,Loyalty)}:name(-3: Deals 10 damage to creature or planeswalker) damage:10 target(creature,planeswalker) auto={C(0/0,-4,Loyalty)}:name(-4: Reanimate a creature or planeswalker) target(*[creature;planeswalker]|graveyard) moveto(myBattlefield) auto={C(0/0,-12,Loyalty)}:name(-12: Exile opponent library except one) moveTo(opponentexile) all(*[zpos<=type:*:opponentlibraryminus1minusend]|opponentlibrary) auto={C(0/0,-12,Loyalty)}:name(-12: Exile your library except one) moveTo(myexile) all(*[zpos<=type:*:mylibraryminus1minusend]|mylibrary) -text=+2: Draw two cards. -- -3: Nicol Bolas, the Arisen deals 10 damage to target creature or planeswalker. -- -4: Put target creature or planeswalker card from a graveyard onto the battlefield under your control. -- -12: Exile all but the bottom card of target player's library. +text=+2: Draw two cards. -- -3: Nicol Bolas, the Arisen deals 10 damage to target creature or planeswalker. -- -4: Put target creature or planeswalker card from a graveyard onto the battlefield under your control. -- -12: Exile all but the bottom card of target player's library. // Nicol Bolas, the Ravager type=Legendary Planeswalker subtype=Bolas color=blue,black,red @@ -2087,12 +2094,13 @@ subtype=Nissa [/card] [card] name=Nissa, Sage Animist +backside=Nissa, Vastwood Seer auto=counter(0/0,3,loyalty) aicode=activate transforms((,newability[if type(land[zpos=1]|mylibrary)~morethan~0 then target(land[zpos=1]|mylibrary) moveto(ownerbattlefield) else target(*[zpos=1]|mylibrary) moveto(ownerhand)])) ueot auto={C(0/0,1,Loyalty)}:name(+1: Reveal the top and put land on battlefield) reveal:1 optionone target(<1>land|reveal) moveto(ownerbattlefield) optiononeend optiontwo target(<1>*|reveal) moveto(ownerhand) optiontwoend revealend auto={C(0/0,-2,Loyalty)}:name(-2: Create a Legendary 4/4 Elemental named Ashaya) create(Ashaya, the Awoken World:Legendary Creature Elemental:4/4:green) auto={C(0/0,-7,Loyalty)}:name(-7: Untap up to six land an becomes 6/6) target(land) transforms((Creature Elemental,newability[untap],setpower=6,settoughness=6)) forever -text=+1: Reveal the top card of your library. If it's a land card, put it onto the battlefield. Otherwise, put it into your hand. -- -2: Put a legendary 4/4 green Elemental creature token named Ashaya, the Awoken World onto the battlefield. -- -7: Untap up to six target lands. They become 6/6 Elemental creatures. They're still lands. +text=+1: Reveal the top card of your library. If it's a land card, put it onto the battlefield. Otherwise, put it into your hand. -- -2: Put a legendary 4/4 green Elemental creature token named Ashaya, the Awoken World onto the battlefield. -- -7: Untap up to six target lands. They become 6/6 Elemental creatures. They're still lands. // Nissa, Vastwood Seer type=Legendary Planeswalker subtype=Nissa color=green @@ -2844,8 +2852,9 @@ type=Legendary Planeswalker [/card] [card] name=Tibalt, Cosmic Impostor +backside=Valki, God of Lies auto=counter(0/0,5,Loyalty) -auto=token(Tibalt Emblem,Emblem,0/0,shroud,indestructible,notrigger,nomovetrigger) and!( transforms((,newability[lord(*[counter{0/0.1.TibaltExiled}]|myexile) canplayfromexile],newability[lord(*[counter{0/0.1.TibaltExiled}]|myexile) anytypeofmana],newability[{0}:name(Cast from opponent exile) target(*[counter{0/0.1.TibaltExiled}]|opponentexile) moveto(myexile) and!( transforms((,newability[counter(0/0.1.TibaltExiled)],newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] counter(0/0.1.TibaltExiled)])) ueot )!])) forever )! +auto=token(Tibalt Emblem,Emblem,0/0,shroud,indestructible,notrigger) and!( transforms((,newability[lord(*[counter{0/0.1.TibaltExiled}]|myexile) canplayfromexile],newability[lord(*[counter{0/0.1.TibaltExiled}]|myexile) anytypeofmana],newability[{0}:name(Cast from opponent exile) target(*[counter{0/0.1.TibaltExiled}]|opponentexile) moveto(myexile) and!( transforms((,newability[counter(0/0.1.TibaltExiled)],newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] counter(0/0.1.TibaltExiled)])) ueot )!])) forever )! auto={C(0/0,2,Loyalty)}:name(+2: Exile the top card) all(*[zpos=1]|library) moveto(ownerexile) and!( counter(0/0,1,TibaltExiled) )! auto={C(0/0,-3,Loyalty)}:name(-3: Exile target artifact or creature) target(*[artifact;creature]|battlefield) moveto(ownerexile) and!( counter(0/0,1,TibaltExiled) )! auto={C(0/0,-8,Loyalty)}:name(-8: Exile all cards from all graveyards) all(*|graveyard) moveto(ownerexile) and!( counter(0/0,1,TibaltExiled) )! diff --git a/projects/mtg/bin/Res/sets/primitives/unsupported.txt b/projects/mtg/bin/Res/sets/primitives/unsupported.txt index d16ad2c86..3ec92fb0f 100644 --- a/projects/mtg/bin/Res/sets/primitives/unsupported.txt +++ b/projects/mtg/bin/Res/sets/primitives/unsupported.txt @@ -2,7 +2,7 @@ grade=unsupported #The cards in this file are not implemented/incomplete yet. #Updated Card lists not in primitives (Borderline, Crappy, Unsupported and Missing Cards up to Aether Revolt) as of 3/14/2017 #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#I sorted this programatically - Vitty85 07-08-2021 +#I sorted this programatically - Vitty85 04-09-2021 [card] name="Ach! Hans, Run!" text=At the beginning of your upkeep, you may say "Ach Hans, run It's the . . ." and name a creature card. If you do, search your library for the named card, put it into play, then shuffle your library. That creature has haste. Remove it from the game at end of turn. @@ -3100,6 +3100,15 @@ mana={2}{B}{B} type=Sorcery [/card] [card] +name=Exiled Doomsayer +text=All morph costs cost {2} more. (This doesn't affect the cost to cast creature spells face down.) +mana={1}{W} +type=Creature +subtype=Human Cleric +power=1 +toughness=2 +[/card] +[card] name=Experiment Kraj text=Experiment Kraj has all activated abilities of each other creature with a +1/+1 counter on it. -- {T}: Put a +1/+1 counter on target creature. mana={2}{G}{G}{U}{U} @@ -11822,12 +11831,6 @@ text={T}: Add {1}{1} . Spend this mana only to cast spells with watermarks. type=Land [/card] [card] -name=Waxing Moon -text=Transform up to one target Werewolf you control. Creatures you control gain trample until end of turn. -mana={1}{G} -type=Instant -[/card] -[card] name=Wear Away text=Destroy target artifact or enchantment. -- Splice onto Arcane {3}{G} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) mana={G}{G} diff --git a/projects/mtg/include/CardDescriptor.h b/projects/mtg/include/CardDescriptor.h index 09cc605d4..4633af232 100644 --- a/projects/mtg/include/CardDescriptor.h +++ b/projects/mtg/include/CardDescriptor.h @@ -47,6 +47,7 @@ class CardDescriptor: public MTGCardInstance int zposition; int hasKickerCost; int hasFlashbackCost; + int hasBackSide; int hasXCost; int anyCounter; int init(); @@ -54,6 +55,7 @@ class CardDescriptor: public MTGCardInstance void unsecureSetKicked(int i); void unsecureSetHasKickerCost(int i); void unsecureSetHasFlashbackCost(int i); + void unsecureSetHasBackSide(int i); void unsecureSetTapped(int i); void unsecuresetfresh(int k); void unsecuresetrecent(int j); diff --git a/projects/mtg/include/CardPrimitive.h b/projects/mtg/include/CardPrimitive.h index cd69ac98a..3541f3abd 100644 --- a/projects/mtg/include/CardPrimitive.h +++ b/projects/mtg/include/CardPrimitive.h @@ -54,6 +54,7 @@ public: string text; string name; string nameOrig; + string backSide; int init(); uint8_t colors; diff --git a/projects/mtg/include/MTGCardInstance.h b/projects/mtg/include/MTGCardInstance.h index 6e364b3ee..065993614 100644 --- a/projects/mtg/include/MTGCardInstance.h +++ b/projects/mtg/include/MTGCardInstance.h @@ -66,11 +66,11 @@ public: int damageInflictedAsCommander; int numofcastfromcommandzone; int auras; - bool wasDealtDamage; - bool combatdamageToOpponent; - bool damageToOpponent; - bool damageToController; - bool damageToCreature; + int wasDealtDamage; + int combatdamageToOpponent; + int damageToOpponent; + int damageToController; + int damageToCreature; bool isProvoked; MTGCardInstance * ProvokeTarget; MTGCardInstance * Provoker; diff --git a/projects/mtg/include/MTGDefinitions.h b/projects/mtg/include/MTGDefinitions.h index a04b81c22..c60854b37 100644 --- a/projects/mtg/include/MTGDefinitions.h +++ b/projects/mtg/include/MTGDefinitions.h @@ -323,7 +323,8 @@ class Constants SHOWCONTROLLERHAND = 196, HASREPLICATE = 197, ISPREY = 198, - NB_BASIC_ABILITIES = 199, + HASDISTURB = 199, + NB_BASIC_ABILITIES = 200, RARITY_S = 'S', //Special Rarity RARITY_M = 'M', //Mythics diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index 682c4aa1c..c448ff5f1 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -4609,12 +4609,15 @@ int AATurnSide::resolve() if(_target->controller()->isAI() && _target->isFlipped) _target->isFlipped = false; // If it's AI calling back we just have to reset isFLipped flag and then return. if(!_target->isFlipped && _SideName == "") return 0; // No need to turn front if card has not been flipped before. if(!_target->isFlipped){ + if(_SideName == "backside" && _target->backSide != "") + _SideName = _target->backSide; // Added to allow to turn a card on its backside. fcard = MTGCollection()->getCardByName(_SideName); if(!fcard) return 0; sideCard = NEW MTGCardInstance(fcard, _target->controller()->game); _target->nameOrig = _target->name; _target->name = sideCard->name; _target->setName(sideCard->name); + _target->backSide = sideCard->backSide; if(!sideCard) return 0; if(sideCard->getManaCost()){ if(_target->getManaCost()->getAlternative()){ @@ -4625,6 +4628,10 @@ int AATurnSide::resolve() sideCard->getManaCost()->setMorph(NEW ManaCost()); sideCard->getManaCost()->getMorph()->copy(_target->getManaCost()->getMorph()); // Keep orignal morph cost to cast the original card with morph. } + if(_target->getManaCost()->getRetrace()){ + sideCard->getManaCost()->setRetrace(NEW ManaCost()); + sideCard->getManaCost()->getRetrace()->copy(_target->getManaCost()->getRetrace()); // Keep orignal retrace cost to cast the original card with retrace (e.g. cards with disturb cost). + } _target->getManaCost()->copy(sideCard->getManaCost()); // Show the other side cost mana symbols. if(_target->numofcastfromcommandzone > 0){ //In case you turn side of a previuosly casted commander _target->getManaCost()->add(Constants::MTG_COLOR_ARTIFACT,2*_target->numofcastfromcommandzone); @@ -4733,9 +4740,11 @@ int AAFlip::resolve() if(flipStats.size()) { if(flipStats == "myorigname" && _target->nameOrig != "") - flipStats = _target->nameOrig; // Added to undo the copy effect at end of turn for a generic card (es. Shapeshifter transformations). + flipStats = _target->nameOrig; // Added to undo the copy effect at end of turn for a generic card (e.g. Shapeshifter transformations). else if(flipStats == "chosenname" && _target->chooseaname != "") flipStats = _target->chooseaname; // Added to allow the transformation of a card in a choosen name. + else if(flipStats == "backside" && _target->backSide != "") + flipStats = _target->backSide; // Added to allow the transformation of a card in its backside (e.g. Werewolves transformations). MTGCard * fcard = MTGCollection()->getCardByName(flipStats); if(!fcard) return 0; MTGCardInstance * myFlip = NEW MTGCardInstance(fcard, _target->controller()->game); @@ -4747,6 +4756,7 @@ int AAFlip::resolve() _target->nameOrig = nameOrig; // Saves the orignal card name before to flip the card. _target->name = myFlip->name; _target->setName(myFlip->name); + _target->backSide = myFlip->backSide; if(!isflipcard)//transform card { _target->getManaCost()->resetCosts(); @@ -4812,7 +4822,13 @@ int AAFlip::resolve() { if (a->oneShot) { - a->resolve(); + if(_target->hasType(Subtypes::TYPE_PLANESWALKER)){ // Fix to don't let planeswalker die on flip (since the counter ability is not resolving correctly during flip). + AACounter * tmp = dynamic_cast(a); + if(tmp && tmp->counterstring.find("loyalty") != string::npos){ + for (int j = 0; j < tmp->nb; j++) + _target->counters->addCounter("loyalty", 0, 0, true); + } else a->resolve(); + } else a->resolve(); SAFE_DELETE(a); } else @@ -4820,9 +4836,7 @@ int AAFlip::resolve() a->addToGame(); MayAbility * dontAdd = dynamic_cast(a); if(!dontAdd) - { _target->cardsAbilities.push_back(a); - } } } } diff --git a/projects/mtg/src/CardDescriptor.cpp b/projects/mtg/src/CardDescriptor.cpp index ca1a0358c..80656b5c4 100644 --- a/projects/mtg/src/CardDescriptor.cpp +++ b/projects/mtg/src/CardDescriptor.cpp @@ -24,6 +24,7 @@ CardDescriptor::CardDescriptor() zposition = -1; hasKickerCost = 0; hasFlashbackCost = 0; + hasBackSide = 0; hasXCost = 0; compareName =""; nameComparisonMode = COMPARISON_NONE; @@ -72,6 +73,11 @@ void CardDescriptor::unsecureSetHasFlashbackCost(int k) hasFlashbackCost = k; } +void CardDescriptor::unsecureSetHasBackSide(int k) +{ + hasBackSide = k; +} + void CardDescriptor::unsecureSetTapped(int i) { tapped = i; @@ -277,6 +283,11 @@ MTGCardInstance * CardDescriptor::match(MTGCardInstance * card) match = NULL; } + if ((hasBackSide == -1 && card->backSide != "") || (hasBackSide == 1 && card->backSide == "")) + { + match = NULL; + } + if ((hasXCost == -1 && card->getManaCost()->hasX()) || (hasXCost == 1 && !card->getManaCost()->hasX())) { match = NULL; @@ -400,13 +411,13 @@ MTGCardInstance * CardDescriptor::match(MTGCardInstance * card) { match = NULL; } - if ((CDdamaged == -1 && card->wasDealtDamage) || (CDdamaged == 1 && !card->wasDealtDamage)) + if ((CDdamaged == -1 && card->wasDealtDamage > 0) || (CDdamaged == 1 && card->wasDealtDamage == 0)) { match = NULL; } - if ((CDdamager == -1 && (card->damageToOpponent || card->damageToController || card->damageToCreature)) - || (CDdamager == 1 && !(card->damageToOpponent || card->damageToController || card->damageToCreature))) + if ((CDdamager == -1 && (card->damageToOpponent > 0 || card->damageToController > 0 || card->damageToCreature > 0)) + || (CDdamager == 1 && !(card->damageToOpponent > 0 || card->damageToController > 0 || card->damageToCreature > 0))) { match = NULL; } @@ -414,17 +425,17 @@ MTGCardInstance * CardDescriptor::match(MTGCardInstance * card) if(CDopponentDamaged == -1 || CDopponentDamaged == 1 || CDcontrollerDamaged == -1 || CDcontrollerDamaged == 1) { Player * p = card->controller(); - if ((CDopponentDamaged == -1 && card->damageToOpponent && card->controller() == p) - || (CDopponentDamaged == 1 && !card->damageToOpponent && card->controller() == p) - || (CDopponentDamaged == -1 && card->damageToController && card->controller() == p->opponent()) - || (CDopponentDamaged == 1 && !card->damageToController && card->controller() == p->opponent())) + if ((CDopponentDamaged == -1 && card->damageToOpponent > 0 && card->controller() == p) + || (CDopponentDamaged == 1 && card->damageToOpponent == 0 && card->controller() == p) + || (CDopponentDamaged == -1 && card->damageToController > 0 && card->controller() == p->opponent()) + || (CDopponentDamaged == 1 && card->damageToController == 0 && card->controller() == p->opponent())) { match = NULL; } - if ((CDcontrollerDamaged == -1 && card->damageToController && card->controller() == p) - || (CDcontrollerDamaged == 1 && !card->damageToController && card->controller() == p) - || (CDcontrollerDamaged == -1 && card->damageToOpponent && card->controller() == p->opponent()) - || (CDcontrollerDamaged == 1 && !card->damageToOpponent && card->controller() == p->opponent())) + if ((CDcontrollerDamaged == -1 && card->damageToController > 0 && card->controller() == p) + || (CDcontrollerDamaged == 1 && card->damageToController == 0 && card->controller() == p) + || (CDcontrollerDamaged == -1 && card->damageToOpponent > 0 && card->controller() == p->opponent()) + || (CDcontrollerDamaged == 1 && card->damageToOpponent == 0 && card->controller() == p->opponent())) { match = NULL; } diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index 888dcb7c9..3bad00db1 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -444,11 +444,11 @@ void CardGui::Render() renderer->DrawRect(actX - (13 * actZ), actY + ymody + 4 * actZ, 25.5f * actZ, 14 * actZ, ARGB(((static_cast(actA))),20,20,20)); //damaged or buffed or powered down - if(card->wasDealtDamage && card->life <= 2) + if(card->wasDealtDamage > 0 && card->life <= 2) mFont->SetColor(ARGB(static_cast(actA),255,0,0));//red critical and damaged - else if(!card->wasDealtDamage && card->pbonus < 0) + else if(card->wasDealtDamage == 0 && card->pbonus < 0) mFont->SetColor(ARGB(static_cast(actA),216,191,216));//thistle powered down - else if(!card->wasDealtDamage && card->pbonus >= 3) + else if(card->wasDealtDamage == 0 && card->pbonus >= 3) mFont->SetColor(ARGB(static_cast(actA),255,255,0));//yellow buff else if(card->hasType("legendary") && card->hasType("eldrazi") && !card->has(Constants::CHANGELING)) mFont->SetColor(ARGB(static_cast(actA),238,130,238));//violet legendary eldrazi @@ -1532,6 +1532,18 @@ bool CardGui::FilterCard(MTGCard * _card,string filter) cd.unsecureSetHasFlashbackCost(1); } } + //Has backside + else if (attribute.find("hasbackside") != string::npos) + { + if (minus) + { + cd.unsecureSetHasBackSide(-1); + } + else + { + cd.unsecureSetHasBackSide(1); + } + } //Token else if (attribute.find("token") != string::npos) { diff --git a/projects/mtg/src/Damage.cpp b/projects/mtg/src/Damage.cpp index d915ef7cb..1e5ce3788 100644 --- a/projects/mtg/src/Damage.cpp +++ b/projects/mtg/src/Damage.cpp @@ -255,18 +255,18 @@ int Damage::resolve() target->nonCombatDamage += damage; } if (target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE && (((MTGCardInstance*)target)->basicAbilities[Constants::UNDAMAGEABLE] == 0)){ - ((MTGCardInstance*)target)->wasDealtDamage = true; - ((MTGCardInstance*)source)->damageToCreature = true; + ((MTGCardInstance*)target)->wasDealtDamage += damage; + ((MTGCardInstance*)source)->damageToCreature += damage; } if (target->type_as_damageable == Damageable::DAMAGEABLE_PLAYER) { if(target == source->controller()) { - ((MTGCardInstance*)source)->damageToController = true; + ((MTGCardInstance*)source)->damageToController += damage; } else { - ((MTGCardInstance*)source)->damageToOpponent = true; + ((MTGCardInstance*)source)->damageToOpponent += damage; if(((MTGCardInstance*)source)->basicAbilities[Constants::ISCOMMANDER]) ((MTGCardInstance*)source)->damageInflictedAsCommander += damage; } @@ -274,7 +274,7 @@ int Damage::resolve() if ( typeOfDamage == 1 && target == source->controller()->opponent() )//add vector prowledtypes. { source->controller()->dealsdamagebycombat = 1; // for restriction check - ((MTGCardInstance*)source)->combatdamageToOpponent = true; //check + ((MTGCardInstance*)source)->combatdamageToOpponent += damage; //check vector values = MTGAllCards::getCreatureValuesById();//getting a weird crash here. rarely. for (size_t i = 0; i < values.size(); ++i) { diff --git a/projects/mtg/src/GameObserver.cpp b/projects/mtg/src/GameObserver.cpp index 295aef0f1..6e9a5fe85 100644 --- a/projects/mtg/src/GameObserver.cpp +++ b/projects/mtg/src/GameObserver.cpp @@ -1026,12 +1026,12 @@ void GameObserver::gameStateBasedEffects() c->flanked -= 1; } c->fresh = 0; - if(c->wasDealtDamage && c->isInPlay(this)) - c->wasDealtDamage = false; - c->damageToController = false; - c->damageToOpponent = false; - c->combatdamageToOpponent = false; - c->damageToCreature = false; + if(c->wasDealtDamage > 0 && c->isInPlay(this)) + c->wasDealtDamage = 0; + c->damageToController = 0; + c->damageToOpponent = 0; + c->combatdamageToOpponent = 0; + c->damageToCreature = 0; c->isAttacking = NULL; c->isProvoked = false; c->ProvokeTarget = NULL; diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index 1cc2c540e..aa99bedd1 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -693,7 +693,7 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe check = restriction[i].find("didcombatdamagetofoe"); if(check != string::npos) { - if(!card->combatdamageToOpponent) + if(card->combatdamageToOpponent == 0) return 0; } @@ -825,6 +825,28 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe if(!found) return 0; } + check = restriction[i].find("coven"); //Player controls three or more creatures with different powers + if(check != string::npos) + { + if(player != observer->currentPlayer) + return 0; + bool found = false; + for(unsigned int i = 0; i < observer->currentPlayer->game->inPlay->cards.size() && !found; i++){ + if(observer->currentPlayer->game->inPlay->cards[i]->hasType(Subtypes::TYPE_CREATURE)){ + for(unsigned int j = i+1; j < observer->currentPlayer->game->inPlay->cards.size() && !found; j++){ + if(observer->currentPlayer->game->inPlay->cards[j]->hasType(Subtypes::TYPE_CREATURE) && observer->currentPlayer->game->inPlay->cards[j]->power != observer->currentPlayer->game->inPlay->cards[i]->power){ + for(unsigned int k = j+1; k < observer->currentPlayer->game->inPlay->cards.size() && !found; k++){ + if(observer->currentPlayer->game->inPlay->cards[k]->hasType(Subtypes::TYPE_CREATURE) && (observer->currentPlayer->game->inPlay->cards[k]->power != observer->currentPlayer->game->inPlay->cards[i]->power && observer->currentPlayer->game->inPlay->cards[k]->power != observer->currentPlayer->game->inPlay->cards[j]->power)){ + found = true; + } + } + } + } + } + } + if(!found) + return 0; + } check = restriction[i].find("can play"); if(check != string::npos) { @@ -6531,15 +6553,17 @@ int ActivatedAbility::isReactingToClick(MTGCardInstance * card, ManaCost * mana) return 0; }*/ // Improved the check to avoid the multiple triggers in case of abilities gained from other cards (e.g. Kasmina, Enigma Sage) - for(unsigned int k = 0;k < card->getObserver()->mLayers->actionLayer()->mObjects.size();++k) + bool turnSide = false; + for(unsigned int k = 0; k < card->getObserver()->mLayers->actionLayer()->mObjects.size(); ++k) { ActivatedAbility * check = dynamic_cast(card->getObserver()->mLayers->actionLayer()->mObjects[k]); - if(check && check->source == card && check->counters) + turnSide = card->isFlipped && !card->isInPlay(card->getObserver()); + if(!turnSide && check && check->source == card && check->counters) return 0; } if (player != game->currentPlayer) return 0; - if (cPhase != MTG_PHASE_FIRSTMAIN && cPhase != MTG_PHASE_SECONDMAIN) + if (!turnSide && (cPhase != MTG_PHASE_FIRSTMAIN && cPhase != MTG_PHASE_SECONDMAIN)) return 0; } if (source->has(Constants::NOACTIVATED) || (source->mutation && source->parentCards.size() > 0)) // Mutated Over/Under card doesn't have to react to click anymore diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 1a9c6d50a..70a8af97f 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -74,6 +74,7 @@ MTGCardInstance::MTGCardInstance(MTGCard * card, MTGPlayerCards * arg_belongs_to myconvertedcost = getManaCost()->getConvertedCost(); revealedLast = NULL; MadnessPlay = false; + backSide = card->data->backSide; } MTGCardInstance * MTGCardInstance::createSnapShot() @@ -140,7 +141,7 @@ void MTGCardInstance::copy(MTGCardInstance * card, bool nolegend) setText(data->text); //The text is retrieved from the data anyways setName(data->name); - + backSide = data->backSide; power = data->power;//layer 7a toughness = data->toughness;//layer 7a power += pbonus;//layer 7b @@ -242,14 +243,14 @@ void MTGCardInstance::initMTGCI() damageInflictedAsCommander = 0; numofcastfromcommandzone = 0; auras = 0; - combatdamageToOpponent = false; - damageToOpponent = false; - damageToController = false; - damageToCreature = false; + combatdamageToOpponent = 0; + damageToOpponent = 0; + damageToController = 0; + damageToCreature = 0; isProvoked = false; ProvokeTarget = NULL; Provoker = NULL; - wasDealtDamage = false; + wasDealtDamage = 0; isDualWielding = false; suspended = false; isBestowed = false; diff --git a/projects/mtg/src/MTGDeck.cpp b/projects/mtg/src/MTGDeck.cpp index 6aa95cbc1..fdeb10707 100644 --- a/projects/mtg/src/MTGDeck.cpp +++ b/projects/mtg/src/MTGDeck.cpp @@ -113,7 +113,7 @@ int MTGAllCards::processConfLine(string &s, MTGCard *card, CardPrimitive * primi } break; - case 'b': //buyback/Bestow + case 'b': //buyback/Bestow/backside if (!primitive) primitive = NEW CardPrimitive(); if (key[1] == 'e' && key[2] == 's') { //bestow @@ -125,6 +125,12 @@ int MTGAllCards::processConfLine(string &s, MTGCard *card, CardPrimitive * primi cost->setBestow(ManaCost::parseManaCost(value)); } } + else + if (key[1] == 'a' && key[2] == 'c') + { //backside + if (!primitive) primitive = NEW CardPrimitive(); + primitive->backSide = val; + } else//buyback if (ManaCost * cost = primitive->getManaCost()) { diff --git a/projects/mtg/src/MTGDefinitions.cpp b/projects/mtg/src/MTGDefinitions.cpp index c074edaa9..5be87c6d4 100644 --- a/projects/mtg/src/MTGDefinitions.cpp +++ b/projects/mtg/src/MTGDefinitions.cpp @@ -228,8 +228,9 @@ const char* Constants::MTGBasicAbilities[] = { "wascommander", //It was the current commander (e.g. after it flipped or morphed) "showopponenthand", //opponent plays with his hand revealed. "showcontrollerhand", //controller plays with his hand revealed. - "hasreplicate", //Kicker cost is a replicate cost (eg. "Vacuumelt") - "isprey" //Creature has been haunted by some other card. + "hasreplicate", //Kicker cost is a replicate cost (e.g. "Vacuumelt") + "isprey", //Creature has been haunted by some other card. + "hasdisturb" //Retrace cost is a disturb cost (e.g. "Beloved Beggar") }; map Constants::MTGBasicAbilitiesMap; diff --git a/projects/mtg/src/TargetChooser.cpp b/projects/mtg/src/TargetChooser.cpp index b84e62ccd..a1e8ac683 100644 --- a/projects/mtg/src/TargetChooser.cpp +++ b/projects/mtg/src/TargetChooser.cpp @@ -583,6 +583,18 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta cd->unsecureSetHasFlashbackCost(1); } } + //Has backside + else if (attribute.find("hasbackside") != string::npos) + { + if (minus) + { + cd->unsecureSetHasBackSide(-1); + } + else + { + cd->unsecureSetHasBackSide(1); + } + } //Token else if (attribute.find("token") != string::npos) { diff --git a/projects/mtg/src/ThisDescriptor.cpp b/projects/mtg/src/ThisDescriptor.cpp index 03f31e444..1ea7fd628 100644 --- a/projects/mtg/src/ThisDescriptor.cpp +++ b/projects/mtg/src/ThisDescriptor.cpp @@ -669,7 +669,7 @@ ThisDamaged::ThisDamaged(int wasDealtDamage) int ThisDamaged::match(MTGCardInstance * card) { int result = 0; -if(card->wasDealtDamage) +if(card->wasDealtDamage > 0) result = 1; return matchValue(result); } diff --git a/projects/mtg/src/WParsedInt.cpp b/projects/mtg/src/WParsedInt.cpp index 0800268bb..7828e855b 100644 --- a/projects/mtg/src/WParsedInt.cpp +++ b/projects/mtg/src/WParsedInt.cpp @@ -1315,9 +1315,14 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card) { intValue = (s == "plastshlturn")?card->controller()->lastShuffleTurn:card->controller()->opponent()->lastShuffleTurn; } - else if (s == "hasprey") + else if (s == "hasprey" || s == "dualfaced" || s == "totaldmg") { - intValue = (card->hauntedCard)?1:0; + if (s == "hasprey") + intValue = (card->hauntedCard)?1:0; + else if (s == "dualfaced") + intValue = (card->backSide != "")?1:0; + else if (s == "totaldmg") + intValue = (card->damageToController + card->damageToCreature + card->damageToOpponent); } else if(!intValue)//found nothing, try parsing a atoi {