diff --git a/projects/mtg/bin/Res/rules/Commander.txt b/projects/mtg/bin/Res/rules/Commander.txt index 945895ecf..13d43cdaf 100644 --- a/projects/mtg/bin/Res/rules/Commander.txt +++ b/projects/mtg/bin/Res/rules/Commander.txt @@ -88,6 +88,9 @@ auto=@movedto(other *|battlefield) restriction{type(*[isflipped]|nonbattlezone)~ #reset Creature damage at the cleanup phase auto=@each cleanup:all(*|myBattlefield) resetDamage +#Stun counter +auto=@untapped(*[counter{0/0.1.Stun}]|mybattlefield):name(Stunned creature can't untap) name(Stunned creature can't untap) all(trigger[to]) transforms((,newability[tap(noevent)],newability[counter(0/0.-1.Stun)])) oneshot + #Commander put back rule auto=@movedTo(*[iscommander]|mygraveyard):may name(Put back to command zone) ability$!name(Put back to command zone) name(Put back to command zone) target(*[iscommander;fresh]|mygraveyard) moveto(mycommandzone)!$ controller auto=@movedTo(*[iscommander]|myexile):may name(Put back to command zone) ability$!name(Put back to command zone) name(Put back to command zone) target(*[iscommander;fresh]|myexile) moveto(mycommandzone)!$ controller diff --git a/projects/mtg/bin/Res/rules/mtg.txt b/projects/mtg/bin/Res/rules/mtg.txt index 23b61b2db..41ab955fa 100644 --- a/projects/mtg/bin/Res/rules/mtg.txt +++ b/projects/mtg/bin/Res/rules/mtg.txt @@ -85,4 +85,7 @@ auto=@movedto(other *|stack) restriction{type(*[isflipped]|nonbattlezone)~moreth auto=@movedto(other *|battlefield) restriction{type(*[isflipped]|nonbattlezone)~morethan~0}:ability$!all(*[isflipped]|nonbattlezone) doubleside()!$ controller #reset Creature damage at the cleanup phase -auto=@each cleanup:all(*|myBattlefield) resetDamage \ No newline at end of file +auto=@each cleanup:all(*|myBattlefield) resetDamage + +#Stun counter +auto=@untapped(*[counter{0/0.1.Stun}]|mybattlefield):name(Stunned creature can't untap) name(Stunned creature can't untap) all(trigger[to]) transforms((,newability[tap(noevent)],newability[counter(0/0.-1.Stun)])) oneshot diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index 8c2e69f9a..d2a65e4f8 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 programmatically - Thanks to Vitty85 09-05-2023 +#I sorted this programmatically - Thanks to Vitty85 15-05-2023 [card] name=+2 Mace auto={3}:equip @@ -320,7 +320,7 @@ toughness=3 [/card] [card] name=Acolyte of Bahamut -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[this(counter{0/0.1.AcolyteEffect}=0) lord(*[dragon]|mycastingzone) altercost(colorless:-2)],newability[@movedto(*[dragon]|mystack):name(Dragon spell casted) counter(0/0.1.AcolyteEffect) notrg],newability[@each endofturn restriction{compare(hascntacolyteffect)~morethan~0}:name(Effect ends) removeallcounters(0/0.1.AcolyteEffect)])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[this(counter{0/0.1.AcolyteEffect}=0) lord(*[dragon]|mycastingzone) altercost(colorless:-2)],newability[@movedto(*[dragon]|mystack):name(Dragon spell casted) counter(0/0.1.AcolyteEffect) notrg],newability[@each endofturn restriction{compare(hascntacolyteffect)~morethan~0}:name(Effect ends) removeallcounters(0/0.1.AcolyteEffect)])) text=Commander creatures you own have "The first Dragon spell you cast each turn costs {2} less to cast." mana={1}{G} type=Legendary Enchantment @@ -914,7 +914,7 @@ toughness=3 [/card] [card] name=Agent of the Iron Throne -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[@movedto(graveyard) from(*[creature;artifact]|mybattlefield):name(Opponent looses life) life:-1 opponent])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[@movedto(graveyard) from(*[creature;artifact]|mybattlefield):name(Opponent looses life) life:-1 opponent])) text=Commander creatures you own have "Whenever an artifact or creature you control is put into a graveyard from the battlefield, each opponent loses 1 life." mana={2}{B} type=Legendary Enchantment @@ -1551,7 +1551,7 @@ type=Enchantment [/card] [card] name=Alora, Merry Thief -abilities=backgoundpartner +abilities=backgroundpartner auto=@each my blockers:may target(creature[attacking]|myBattlefield) transforms((,newability[unblockable],newability[phaseaction[endofturn once] moveTo(ownerhand) ueot])) oneshot text=Whenever you attack, up to one target attacking creature can't be blocked this turn. Return that creature to its owner's hand at the beginning of the next end step. -- Choose a Background (You can have a Background as a second commander.) mana={2}{U} @@ -1749,7 +1749,7 @@ toughness=2 [/card] [card] name=Amber Gristle O'Maul -abilities=haste,backgoundpartner +abilities=haste,backgroundpartner auto=_ATTACKING_may all(*|myhand) reject && draw:1 text=Haste -- Whenever Amber Gristle O'Maul attacks, you may discard your hand. If you do, draw a card for each player being attacked. -- Choose a Background (You can have a Background as a second commander.) mana={3}{R} @@ -5266,6 +5266,22 @@ power=* toughness=* [/card] [card] +name=Awakened Skyclave +abilities=haste,vigilance +auto={T}:Add{W} +auto={T}:Add{U} +auto={T}:Add{B} +auto={T}:Add{R} +auto={T}:Add{G} +auto=transforms((Land)) forever +text=Vigilance, haste -- As long as Awakened Skyclave is on the battlefield, it's a land in addition to its other types. -- {T}: Add one mana of any color. +color=green +type=Creature +subtype=Elemental +power=4 +toughness=4 +[/card] +[card] name=Awakening of Vitu-Ghazi target=land|myBattlefield auto=transforms((Legendary Elemental Creature, Vitu-Ghazi,newability[counter(1/1.9)],newability[haste])) forever @@ -7019,6 +7035,17 @@ power=3 toughness=2 [/card] [card] +name=Belligerent Regisaur +abilities=trample +auto=@movedTo(*|mystack):name(Gains indestructible) name(Gains indestructible) all(this) transforms((,newability[indestructible])) ueot +text=Trample -- Whenever you cast a spell, Belligerent Regisaur gains indestructible until end of turn. +color=green +type=Creature +subtype=Dinosaur +power=4 +toughness=3 +[/card] +[card] name=Bellowing Aegisaur auto=_ENRAGE_counter(1/1) all(other creature|mybattlefield) text=Enrage - Whenever Bellowing Aegisaur is dealt damage, put a +1/+1 counter on each other creature you control. @@ -8487,6 +8514,34 @@ power=4 toughness=4 [/card] [card] +name=Bloated Processor +auto={S(other *[phyrexian]|mybattlefield)}:name(Put 1/1 counter) counter(1/1) +auto=_DIES_this(counter{1/1}=0) transforms((,newability[name(Incubate 3) name(Incubate 3) activate castcard(noevent costx!:3:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=1) transforms((,newability[name(Incubate 4) name(Incubate 4) activate castcard(noevent costx!:4:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=2) transforms((,newability[name(Incubate 5) name(Incubate 5) activate castcard(noevent costx!:5:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=3) transforms((,newability[name(Incubate 6) name(Incubate 6) activate castcard(noevent costx!:6:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=4) transforms((,newability[name(Incubate 7) name(Incubate 7) activate castcard(noevent costx!:7:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=5) transforms((,newability[name(Incubate 8) name(Incubate 8) activate castcard(noevent costx!:8:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=6) transforms((,newability[name(Incubate 9) name(Incubate 9) activate castcard(noevent costx!:9:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=7) transforms((,newability[name(Incubate 10) name(Incubate 10) activate castcard(noevent costx!:10:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=8) transforms((,newability[name(Incubate 11) name(Incubate 11) activate castcard(noevent costx!:11:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=9) transforms((,newability[name(Incubate 12) name(Incubate 12) activate castcard(noevent costx!:12:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=10) transforms((,newability[name(Incubate 13) name(Incubate 13) activate castcard(noevent costx!:13:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=11) transforms((,newability[name(Incubate 14) name(Incubate 14) activate castcard(noevent costx!:14:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=12) transforms((,newability[name(Incubate 15) name(Incubate 15) activate castcard(noevent costx!:15:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=13) transforms((,newability[name(Incubate 16) name(Incubate 16) activate castcard(noevent costx!:16:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=14) transforms((,newability[name(Incubate 17) name(Incubate 17) activate castcard(noevent costx!:17:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=15) transforms((,newability[name(Incubate 18) name(Incubate 18) activate castcard(noevent costx!:18:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}=16) transforms((,newability[name(Incubate 19) name(Incubate 19) activate castcard(noevent costx!:19:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{1/1}>=17) transforms((,newability[name(Incubate 20) name(Incubate 20) activate castcard(noevent costx!:20:! named!:Incubator:!)])) oneshot +text=Sacrifice another Phyrexian: Put a +1/+1 counter on Bloated Processor. -- When Bloated Processor dies, incubate X, where X is its power. (Create an Incubator token with X +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) +mana={2}{B} +type=Creature +subtype=Phyrexian +power=3 +toughness=2 +[/card] +[card] name=Blood auto={1}{T}{D(*|myhand)}{S}:name(Draw a card) draw:1 controller text={1}, {T}, Discard a card, Sacrifice this artifact: Draw a card. @@ -10724,9 +10779,8 @@ type=Sorcery name=Brimaz, Blight of Oreskos auto=@movedTo(creature[artifact]|mystack):name(Incubate X) name(Incubate X) all(trigger[to]) transforms((,newability[name(Incubate X) name(Incubate X) activate castcard(noevent costx!:manacost:! named!:Incubator:!)])) oneshot auto=@movedTo(creature[-artifact&phyrexian]|mystack):name(Incubate X) name(Incubate X) all(trigger[to]) transforms((,newability[name(Incubate X) name(Incubate X) activate castcard(noevent costx!:manacost:! named!:Incubator:!)])) oneshot -auto=@movedTo(phyrexian|graveyard) from(mybattlefield):name(Phyrexian died) counter(0/0,1,BrimazEffect) notrg -auto=@each my endofturn restriction{compare(hascntbrimazeffect)~morethan~0}:name(Effect ends) name(Effect ends) removeallcounters(0/0.1.BrimazEffect) -auto=@each my endofturn restriction{compare(hascntbrimazeffect)~morethan~0}:name(Proliferate) _PROLIFERATE_ +auto=@movedTo(phyrexian|graveyard) from(mybattlefield):name(Proliferate) _PROLIFERATE_ +auto=@movedTo(*[counter{0/0.1.Phyrexian}]|graveyard) from(mybattlefield):name(Proliferate) _PROLIFERATE_ text=Whenever you cast a Phyrexian creature or artifact creature spell, incubate X, where X is that spell's mana value. (Create an Incubator token with X +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) -- At the beginning of each end step, if a Phyrexian died under your control this turn, proliferate. mana={2}{W}{B} type=Legendary Creature @@ -11239,7 +11293,7 @@ toughness=2 [/card] [card] name=Burakos, Party Leader -abilities=backgoundpartner +abilities=backgroundpartner auto=becomes(Cleric Rogue Warrior Wizard) auto=_ATTACKING_damage:calculateparty opponent && create(Treasure sur)*calculateparty text=Burakos, Party Leader is also a Cleric, Rogue, Warrior, and Wizard. -- Whenever Burakos attacks, defending player loses X life and you create X Treasure tokens, where X is the number of creatures in your party. -- Choose a Background (You can have a Background as a second commander.) @@ -11952,7 +12006,7 @@ type=Sorcery [/card] [card] name=Candlekeep Sage -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[@movedTo(this|nonbattlezone) from(battlefield):name(Draw a card) draw:1 controller])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[@movedTo(this|nonbattlezone) from(battlefield):name(Draw a card) draw:1 controller])) auto=@movedTo(*[iscommander]|myBattlefield):name(Draw a card) draw:1 controller text=Commander creatures you own have "When this creature enters or leaves the battlefield, draw a card." mana={2}{U} @@ -14960,7 +15014,7 @@ toughness=1 [/card] [card] name=Clan Crafter -auto=lord(*[iscommander]|myBattlefield) transforms((,newability[{2}{S(artifact|myBattlefield)}:name(Put counter and draw) counter(1/1) && draw:1 controller])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[{2}{S(artifact|myBattlefield)}:name(Put counter and draw) counter(1/1) && draw:1 controller])) text=Commander creatures you own have "{2}, Sacrifice an artifact: Put a +1/+1 counter on this creature and draw a card." mana={1}{U} type=Legendary Enchantment @@ -15360,7 +15414,7 @@ toughness=4 [/card] [card] name=Cloakwood Hermit -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[@each my end restriction{type(creature[fresh]|mygraveyard)~morethan~0}:name(Create 2 squirrels) token(Squirrel^Creature Squirrel^1/1^green)*2 and!( tap(noevent) )!])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[@each my end restriction{type(creature[fresh]|mygraveyard)~morethan~0}:name(Create 2 squirrels) token(Squirrel^Creature Squirrel^1/1^green)*2 and!( tap(noevent) )!])) text=Commander creatures you own have "At the beginning of your end step, if a creature card was put into your graveyard from anywhere this turn, create two tapped 1/1 green Squirrel creature tokens." mana={2}{G} type=Legendary Enchantment @@ -16276,6 +16330,16 @@ power=3 toughness=3 [/card] [card] +name=Compleated Huntmaster +auto={1}{T}{S(other *[creature;artifact]|mybattlefield)}:name(Incubate 3) name(Incubate 3) activate castcard(noevent costx!:3:! named!:Incubator:!) +text={1}, {T}, Sacrifice another creature or artifact: Incubate 3. (Create an Incubator token with three +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) +mana={2}{B} +type=Creature +subtype=Phyrexian Elf Warrior +power=2 +toughness=3 +[/card] +[card] name=Complete the Circuit other={convoke} name(Convoke) auto=emblem transforms((,newability[lord(sorcery|mycastingzone) asflash],newability[@movedto(*[instant;sorcery]|mystack) turnlimited:name(Copy spell twice) name(Copy spell twice) all(trigger[to]) transforms((,newability[activate castcard(copied noevent costx!:x:! kicked!:kicked:!)],newability[activate castcard(copied noevent costx!:x:! kicked!:kicked:!)])) ueot])) ueot @@ -16900,6 +16964,16 @@ mana={4} type=Artifact [/card] [card] +name=Converter Beast +auto=name(Incubate 5) name(Incubate 5) activate castcard(noevent costx!:5:! named!:Incubator:!) +text=When Converter Beast enters the battlefield, incubate 5. (Create an Incubator token with five +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) +mana={3}{G} +type=Creature +subtype=Phyrexian Beast +power=0 +toughness=1 +[/card] +[card] name=Coordinated Charge abilities=cycling auto=all(creature|myBattlefield) 2/1 ueot @@ -17811,7 +17885,7 @@ type=Sorcery [/card] [card] name=Criminal Past -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[menace],newability[type:creature:mygraveyard/type:creature:mygraveyard nonstatic])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[menace],newability[type:creature:mygraveyard/type:creature:mygraveyard nonstatic])) text=Commander creatures you own have menace and "This creature gets +X/+0, where X is the number of creature cards in your graveyard." (A creature with menace can't be blocked except by two or more creatures.) mana={2}{B} type=Legendary Enchantment @@ -18374,8 +18448,8 @@ toughness=4 [/card] [card] name=Cultist of the Absolute -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[3/3],newability[flying],newability[deathtouch],newability[@each my upkeep:name(Sacrifice a creature) sacrifice notatarget(creature|myBattlefield)])) -auto=@targeted(*[iscommander]|mybattlefield) from(*[instant;sorcery]|opponentzones):choice name(This spell costs 3 life more) name(This spell costs 3 life more) target(*[instant;sorcery]|opponentzones) transforms((,newability[pay[[{L:3}]] name(pay 3 life) donothing?fizzle])) oneshot +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[3/3],newability[flying],newability[deathtouch],newability[@each my upkeep:name(Sacrifice a creature) sacrifice notatarget(creature|myBattlefield)])) +auto=@targeted(creature[iscommander]|mybattlefield) from(*[instant;sorcery]|opponentzones):choice name(This spell costs 3 life more) name(This spell costs 3 life more) target(*[instant;sorcery]|opponentzones) transforms((,newability[pay[[{L:3}]] name(pay 3 life) donothing?fizzle])) oneshot text=Commander creatures you own get +3/+3 and have flying, deathtouch, "Ward-Pay 3 life," and "At the beginning of your upkeep, sacrifice a creature." mana={B} type=Legendary Enchantment @@ -18878,13 +18952,6 @@ mana={1}{R} type=Sorcery [/card] [card] -name=Cut a Deal -auto=draw:1 opponent && draw:1 -text=Each opponent draws a card, then you draw a card for each opponent who drew a card this way. -mana={2}{W} -type=Sorcery -[/card] -[card] name=Cut Short other={convoke} name(Convoke) auto=if compare(restriction{opponentturnonly}~morethan~0) then if type(planeswalker|opponentbattlefield)~morethan~0 then choice name(Destroy activated planeswalker) name(Destroy activated planeswalker) name(Destroy activated planeswalker) target(planeswalker|opponentbattlefield) destroy @@ -18895,6 +18962,13 @@ mana={2}{W} type=Instant [/card] [card] +name=Cut a Deal +auto=draw:1 opponent && draw:1 +text=Each opponent draws a card, then you draw a card for each opponent who drew a card this way. +mana={2}{W} +type=Sorcery +[/card] +[card] name=Cutthroat Centurion auto={S(other artifact,creature|mybattlefield)}:2/2 ueot limit:1 text=Sacrifice another artifact or creature: Cutthroat Centurion gets +2/+2 until end of turn. Activate only once each turn. @@ -20553,6 +20627,17 @@ power=2 toughness=2 [/card] [card] +name=Defiant Thundermaw +abilities=flying,trample +auto=@combat(attacking) source(dragon|mybattlefield):name(Deals 2 damage) damage:2 target(player,creature,planeswalker) +text=Flying, trample -- Whenever a Dragon you control attacks, it deals 2 damage to any target. +color=red +type=Creature +subtype=Dragon +power=4 +toughness=4 +[/card] +[card] name=Defile target=creature auto=foreach(swamp|mybattlefield) -1/-1 @@ -20662,6 +20747,14 @@ mana={2}{B} type=Sorcery [/card] [card] +name=Deluge of the Dead +auto=name(Create 2 zombies) token(Zombie,Creature Zombie,2/2,black)*2 +auto={2}{B}:name(Exile a card) target(*|graveyard) moveto(exile) and!( if cantargetcard(*[creature]|*) then token(Zombie,Creature Zombie,2/2,black) )! +text=When Deluge of the Dead enters the battlefield, create two 2/2 black Zombie creature tokens. -- {2}{B}: Exile target card from a graveyard. If it was a creature card, create a 2/2 black Zombie creature token. +color=black +type=Enchantment +[/card] +[card] name=Deluxe Dragster auto=cantbeblockedby(creature[-Vehicle]) auto={crew(other creature[power>=2]|myBattlefield)}:name(crew 2 [1 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=2]|mybattlefield)~morethan~0,compare(crewtotalpower)~morethan~1} @@ -20993,8 +21086,8 @@ type=Instant [card] name=Depraved Harvester backside=Desperate Farmer -abilities=lifelink // Desperate Farmer -text=Lifelink +abilities=lifelink +text=Lifelink // Desperate Farmer color=black type=Creature subtype=Human Knight @@ -22113,6 +22206,17 @@ power=4 toughness=4 [/card] [card] +name=Disciples of the Inferno +auto=@damaged(*[creature;planeswalker;battle]|battlefield) from(*[-creature]|myzones):name(Deals 2 damage more) all(trigger[to]) damage:2 +auto=@damagefoeof(player) from(*[-creature]|myzones):name(Deals 2 damage more) all(trigger[to]) damage:2 +text=Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.) -- If a noncreature source you control would deal damage to a creature, battle, or opponent, it deals that much damage plus 2 instead. +color=red +type=Creature +subtype=Human Monk +power=4 +toughness=4 +[/card] +[card] name=Discordant Piper auto=_DIES_token(Goat,Creature Goat,0/1,white) text=When Discordant Piper dies, create a 0/1 white Goat creature token. @@ -22999,9 +23103,9 @@ type=Instant [/card] [card] name=Dragon Cultist -auto=@damaged(*[creature;planeswalker]|opponentbattlefield) from(*|myzones) restriction{compare(thatmuch)~morethan~4}:name(A source dealt damage) all(*[iscommander]|mybattlefield) counter(0/0.1.DamageDealt) notrg -auto=@damaged(player) from(*|myzones) restriction{compare(thatmuch)~morethan~4}:name(A source dealt damage) all(*[iscommander]|mybattlefield) counter(0/0.1.DamageDealt) notrg -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[@each my endofturn restriction{compare(hascntdamagedealt)~morethan~0}:name(Create Dragon) token(Dragon^Creature Dragon^4/4^red^flying)],newability[@each my endofturn restriction{compare(hascntdamagedealt)~morethan~0}:name(Effect ends) removeallcounters(0/0.1.DamageDealt)])) +auto=@damaged(*[creature;planeswalker]|opponentbattlefield) from(*|myzones) restriction{compare(thatmuch)~morethan~4}:name(A source dealt damage) all(creature[iscommander]|mybattlefield) counter(0/0.1.DamageDealt) notrg +auto=@damaged(player) from(*|myzones) restriction{compare(thatmuch)~morethan~4}:name(A source dealt damage) all(creature[iscommander]|mybattlefield) counter(0/0.1.DamageDealt) notrg +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[@each my endofturn restriction{compare(hascntdamagedealt)~morethan~0}:name(Create Dragon) token(Dragon^Creature Dragon^4/4^red^flying)],newability[@each my endofturn restriction{compare(hascntdamagedealt)~morethan~0}:name(Effect ends) removeallcounters(0/0.1.DamageDealt)])) text=Commander creatures you own have "At the beginning of your end step, if a source you controlled dealt 5 or more damage this turn, create a 4/4 red Dragon creature token with flying." mana={4}{R} type=Legendary Enchantment @@ -24348,7 +24452,7 @@ toughness=1 [/card] [card] name=Dungeon Delver -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[twodngtrg])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[twodngtrg])) text=Commander creatures you own have "Room abilities of dungeons you own trigger an additional time." mana={1}{U} type=Legendary Enchantment @@ -25777,6 +25881,17 @@ power=1 toughness=1 [/card] [card] +name=Elvish Vatkeeper +auto=name(Incubate 2) name(Incubate 2) activate castcard(noevent costx!:2:! named!:Incubator:!) +auto={5}:name(Transform incubator) target(incubator|myBattlefield) transforms((,newability[flip(backside)],newability[counter(1/1.hascnt11)])) oneshot +text=When Elvish Vatkeeper enters the battlefield, incubate 2. (Create an Incubator token with two +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) -- {5}: Transform target Incubator token you control. Double the number of +1/+1 counters on it. +mana={1}{B}{G} +type=Creature +subtype=Phyrexian Elf +power=3 +toughness=3 +[/card] +[card] name=Elvish Warmaster auto=@movedto(elf|mybattlefield) turnlimited:token(Warrior,Creature Elf Warrior,1/1,green) auto={5}{G}{G}:all(elf|mybattlefield) transforms((,newability[2/2],newability[deathtouch])) ueot @@ -26574,18 +26689,6 @@ power=5 toughness=5 [/card] [card] -name=Ephara, Ever-Sheltering -auto=aslongas(enchantment|mybattlefield) lifelink >3 -auto=aslongas(enchantment|mybattlefield) indestructible >3 -auto=@movedTo(enchantment|myBattlefield):name(Draw a card) draw:1 controller -text=Ephara, Ever-Sheltering has lifelink and indestructible as long as you control at least three other enchantments. -- Whenever another enchantment enters the battlefield under your control, draw a card. -type=Legendary Enchantment Creature -subtype=God -color=white,blue -power=4 -toughness=4 -[/card] -[card] name=Ephara's Dispersal other={U} name(Target attacking creature) restriction=type(creature|battlefield)~morethan~0 @@ -26599,6 +26702,18 @@ mana={2}{U} type=Instant [/card] [card] +name=Ephara, Ever-Sheltering +auto=aslongas(enchantment|mybattlefield) lifelink >3 +auto=aslongas(enchantment|mybattlefield) indestructible >3 +auto=@movedTo(enchantment|myBattlefield):name(Draw a card) draw:1 controller +text=Ephara, Ever-Sheltering has lifelink and indestructible as long as you control at least three other enchantments. -- Whenever another enchantment enters the battlefield under your control, draw a card. +type=Legendary Enchantment Creature +subtype=God +color=white,blue +power=4 +toughness=4 +[/card] +[card] name=Ephemerate target=creature|mybattlefield auto=moveto(exile) and!(moveto(ownerbattlefield))! @@ -26676,7 +26791,7 @@ toughness=6 [/card] [card] name=Erinis, Gloom Stalker -abilities=deathtouch,backgoundpartner +abilities=deathtouch,backgroundpartner auto=_ATTACKING_target(land|mygraveyard) moveTo(mybattlefield) text=Deathtouch -- Whenever Erinis, Gloom Stalker attacks, return target land card from your graveyard to the battlefield. -- Choose a Background (You can have a Background as a second commander.) mana={2}{G} @@ -28681,7 +28796,7 @@ type=Instant [/card] [card] name=Far Traveler -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[@each my endofturn:may name(Exile a creature) target(creature[tapped]|mybattlefield) moveto(myexile) and!( moveto(ownerbattlefield) )!])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[@each my endofturn:may name(Exile a creature) target(creature[tapped]|mybattlefield) moveto(myexile) and!( moveto(ownerbattlefield) )!])) text=Commander creatures you own have "At the beginning of your end step, exile up to one target tapped creature you control, then return it to the battlefield under its owner's control." mana={2}{W} type=Legendary Enchantment @@ -29511,7 +29626,7 @@ toughness=2 [/card] [card] name=Feywild Visitor -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[@combatdamagefoeof(player) from(creature[-token]|mybattlefield):name(Create Faerie) token(Faerie Dragon^Creature Faerie Dragon^1/1^blue^flying)],newability[@combatdamageof(player) from(creature[-token]|mybattlefield):name(Create Faerie) token(Faerie Dragon^Creature Faerie Dragon^1/1^blue^flying)])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[@combatdamagefoeof(player) from(creature[-token]|mybattlefield):name(Create Faerie) token(Faerie Dragon^Creature Faerie Dragon^1/1^blue^flying)],newability[@combatdamageof(player) from(creature[-token]|mybattlefield):name(Create Faerie) token(Faerie Dragon^Creature Faerie Dragon^1/1^blue^flying)])) text=Commander creatures you own have "Whenever one or more nontoken creatures you control deal combat damage to a player, you create a 1/1 blue Faerie Dragon creature token with flying." mana={2}{U} type=Legendary Enchantment @@ -30835,6 +30950,18 @@ mana={2}{U} type=Instant [/card] [card] +name=Flitting Guerrilla +abilities=flying +auto=_DIES_may name(Exile and return) all(this|mygraveyard) moveto(myexile) and!( transforms((,newability[name(Return creature or battle) name(Return creature or battle) target(*[creature;battle]|mygraveyard) moveto(mylibrary)])) forever )! +auto=_DIES_name(Each player mills 2 cards) deplete:2 opponent && deplete:2 controller +text=Flying -- When Flitting Guerrilla dies, each player mills two cards. Then you may exile Flitting Guerrilla. When you do, put target creature or battle card from your graveyard on top of your library. (To mill two cards, a player puts the top two cards of their library into their graveyard.) +mana={2}{B} +type=Creature +subtype=Faerie Rogue +power=2 +toughness=2 +[/card] +[card] name=Flood of Recollection target=instant,sorcery|mygraveyard auto=moveto(ownerHand) @@ -31105,7 +31232,7 @@ type=Artifact [/card] [card] name=Folk Hero -auto=lord(*[iscommander]|myBattlefield) transforms((,newability[@movedTo(*[creature;share!types!]|mystack) turnlimited:name(Draw a card) draw:1 controller])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[@movedTo(*[creature;share!types!]|mystack) turnlimited:name(Draw a card) draw:1 controller])) text=Commander creatures you own have "Whenever you cast a spell that shares a creature type with this creature, draw a card. This ability triggers only once each turn." mana={1}{W} type=Legendary Enchantment @@ -32198,6 +32325,37 @@ mana={2}{R} type=Enchantment [/card] [card] +name=Furnace Gremlin +auto={1}{R}:name(Gets 1/0) transforms((,newability[1/0],newability[counter(0/0.1.FurnaceEffect) notrg])) ueot +auto=@each my end restriction{compare(hascntfurnaceeffect)~morethan~0}:name(Effect ends) removeallcounters(0/0.1.FurnaceEffect) +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=0) transforms((,newability[name(Incubate 1) name(Incubate 1) activate castcard(noevent costx!:1:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=1) transforms((,newability[name(Incubate 2) name(Incubate 2) activate castcard(noevent costx!:2:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=2) transforms((,newability[name(Incubate 3) name(Incubate 3) activate castcard(noevent costx!:3:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=3) transforms((,newability[name(Incubate 4) name(Incubate 4) activate castcard(noevent costx!:4:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=4) transforms((,newability[name(Incubate 5) name(Incubate 5) activate castcard(noevent costx!:5:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=5) transforms((,newability[name(Incubate 6) name(Incubate 6) activate castcard(noevent costx!:6:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=6) transforms((,newability[name(Incubate 7) name(Incubate 7) activate castcard(noevent costx!:7:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=7) transforms((,newability[name(Incubate 8) name(Incubate 8) activate castcard(noevent costx!:8:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=8) transforms((,newability[name(Incubate 9) name(Incubate 9) activate castcard(noevent costx!:9:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=9) transforms((,newability[name(Incubate 10) name(Incubate 10) activate castcard(noevent costx!:10:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=10) transforms((,newability[name(Incubate 11) name(Incubate 11) activate castcard(noevent costx!:11:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=11) transforms((,newability[name(Incubate 12) name(Incubate 12) activate castcard(noevent costx!:12:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=12) transforms((,newability[name(Incubate 13) name(Incubate 13) activate castcard(noevent costx!:13:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=13) transforms((,newability[name(Incubate 14) name(Incubate 14) activate castcard(noevent costx!:14:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=14) transforms((,newability[name(Incubate 15) name(Incubate 15) activate castcard(noevent costx!:15:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=15) transforms((,newability[name(Incubate 16) name(Incubate 16) activate castcard(noevent costx!:16:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=16) transforms((,newability[name(Incubate 17) name(Incubate 17) activate castcard(noevent costx!:17:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=17) transforms((,newability[name(Incubate 18) name(Incubate 18) activate castcard(noevent costx!:18:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}=18) transforms((,newability[name(Incubate 19) name(Incubate 19) activate castcard(noevent costx!:19:! named!:Incubator:!)])) oneshot +auto=_DIES_this(counter{0/0.1.FurnaceEffect}>=19) transforms((,newability[name(Incubate 20) name(Incubate 20) activate castcard(noevent costx!:20:! named!:Incubator:!)])) oneshot +text={1}{R}: Furnace Gremlin gets +1/+0 until end of turn. -- When Furnace Gremlin dies, incubate X, where X is its power. (Create an Incubator token with X +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) +mana={1}{R} +type=Creature +subtype=Phyrexian Gremlin +power=1 +toughness=2 +[/card] +[card] name=Furnace Host Charger abilities=haste aicode=activate moveTo(myHand) target(mountain|myLibrary) @@ -32468,7 +32626,7 @@ type=Instant [/card] [card] name=Gale, Waterdeep Prodigy -abilities=backgoundpartner +abilities=backgroundpartner auto=@movedTo(instant|mystack) from(myhand):may name(Cast sorcery) target(sorcery|mygraveyard) transforms((,newability[canplayfromgraveyard],newability[gainedexiledeath])) oneshot auto=@movedTo(sorcery|mystack) from(myhand):may name(Cast instant) target(instant|mygraveyard) transforms((,newability[canplayfromgraveyard],newability[gainedexiledeath])) oneshot text=Whenever you cast an instant or sorcery spell from your hand, you may cast up to one target card of the other type from your graveyard. If a spell cast from your graveyard this way would be put into your graveyard, exile it instead. -- Choose a Background (You can have a Background as a second commander.) @@ -32591,7 +32749,7 @@ type=Sorcery [/card] [card] name=Ganax, Astral Hunter -abilities=flying,backgoundpartner +abilities=flying,backgroundpartner auto=token(Treasure sur) auto=@movedTo(Dragon|myBattlefield):token(Treasure sur) text=Flying -- Whenever Ganax, Astral Hunter or another Dragon enters the battlefield under your control, create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") -- Choose a Background (You can have a Background as a second commander.) @@ -33807,6 +33965,16 @@ mana={1}{W} type=Instant [/card] [card] +name=Gift of Compleation +auto=name(Incubate 3) name(Incubate 3) activate castcard(noevent costx!:3:! named!:Incubator:!) +aicode=activate transforms((,newability[surveil],newability[all(*[zpos<=psurveiloffsetplus1plusend]|mylibrary) transforms((,newability[if compare(genrand2)~equalto~1 then moveto(mygraveyard)])) oneshot])) oneshot +auto=@movedTo(phyrexian|graveyard) from(mybattlefield):name(Surveil 1) reveal:psurveiloffsetplus1plusend optionone name(put in graveyard) target(*|reveal) moveto(ownergraveyard) optiononeend optiontwo name(put in library) target(*|reveal) moveto(ownerlibrary) optiontwoend afterrevealed surveil afterrevealedend revealend +auto=@movedTo(*[counter{0/0.1.Phyrexian}]|graveyard) from(mybattlefield):name(Surveil 1) reveal:psurveiloffsetplus1plusend optionone name(put in graveyard) target(*|reveal) moveto(ownergraveyard) optiononeend optiontwo name(put in library) target(*|reveal) moveto(ownerlibrary) optiontwoend afterrevealed surveil afterrevealedend revealend +text=When Gift of Compleation enters the battlefield, incubate 3. (Create an Incubator token with three +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) -- Whenever a Phyrexian you control dies, surveil 1. (Look at the top card of your library. You may put that card into your graveyard.) +mana={1}{B} +type=Enchantment +[/card] +[card] name=Gift of Fangs target=creature auto=teach(creature[vampire]) 2/2 @@ -34500,6 +34668,14 @@ power=0 toughness=3 [/card] [card] +name=Glistening Dawn +auto=name(Incubate X) name(Incubate X) activate castcard(noevent costx!:type:land:mybattlefield:! named!:Incubator:!) +auto=name(Incubate X) name(Incubate X) activate castcard(noevent costx!:type:land:mybattlefield:! named!:Incubator:!) +text=Incubate X twice, where X is the number of lands you control. (To incubate X, create an Incubator token with X +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) +mana={2}{G}{G} +type=Sorcery +[/card] +[card] name=Glistening Deluge auto=all(creature) -1/-1 auto=all(*[green;white]) -2/-2 @@ -36225,6 +36401,18 @@ power=3 toughness=4 [/card] [card] +name=Grandmother Ravi Sengir +abilities=flying +auto=@movedTo(creature|graveyard) from(opponentbattlefield):name(Put 1/1 counter) name(Put 1/1 counter) target(*[creature&legendary&human&wizard&isflipped]|mybattlefield) counter(1/1) +auto=@movedTo(creature|graveyard) from(opponentbattlefield):name(Gain 1 life) life:1 controller +text=Flying -- Whenever a creature an opponent controls dies, put a +1/+1 counter on Grandmother Ravi Sengir and you gain 1 life. +color=black +type=Legendary Creature +subtype=Human Wizard +power=3 +toughness=3 +[/card] +[card] name=Granitic Titan abilities=menace,cycling autohand=__CYCLING__({2}) @@ -37434,7 +37622,7 @@ type=Sorcery [/card] [card] name=Guild Artisan -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[_ATTACKING_name(Create treasure) token(Treasur Sur)*2])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[_ATTACKING_name(Create treasure) token(Treasur Sur)*2])) text=Commander creatures you own have "Whenever this creature attacks a player, if no opponent has more life than that player, you create two Treasure tokens." (They're artifacts with "{T}, Sacrifice this artifact: Add one mana of any color.") mana={1}{R} type=Legendary Enchantment @@ -37592,7 +37780,7 @@ type=Sorcery [/card] [card] name=Gut, True Soul Zealot -abilities=backgoundpartner +abilities=backgroundpartner auto=@each my blockers:may notatarget(other creature,artifact|mybattlefield) sacrifice && create(skeleton:creature skeleton:4/1:black:menace,battleready) text=Whenever you attack, you may sacrifice another creature or an artifact. If you do, create a 4/1 black Skeleton creature token with menace that's tapped and attacking. (It can't be blocked except by two or more creatures.) -- Choose a Background (You can have a Background as a second commander.) mana={2}{R} @@ -38084,7 +38272,7 @@ toughness=4 [/card] [card] name=Halsin, Emerald Archdruid -abilities=backgoundpartner +abilities=backgroundpartner auto={1}:target(*[token]|myBattlefield) transforms((bear creature,setpower=4,settoughness=4,newcolors[green])) ueot text={1}: Until end of turn, target token you control becomes a green Bear creature with base power and toughness 4/4 in addition to its other colors and types. -- Choose a Background (You can have a Background as a second commander.) mana={3}{G} @@ -38424,7 +38612,7 @@ subtype=Aura [/card] [card] name=Hardy Outlander -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[@combat(attacking) source(this):name(Creature gains X/X) target(creature|mybattlefield) power/power ueot])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[@combat(attacking) source(this):name(Creature gains X/X) target(creature|mybattlefield) power/power ueot])) text=Commander creatures you own have "Whenever this creature attacks a player, if no opponent has more life than that player, another target creature you control gets +X/+X until end of turn, where X is this creature's power." mana={1}{G} type=Legendary Enchantment @@ -40166,6 +40354,19 @@ power=1 toughness=3 [/card] [card] +name=Hoarding Broodlord +abilities=hiddenface,flying +other={convoke} name(Convoke) +auto=name(Search and exile) target(*|mylibrary) moveto(myexile) and!( transforms((,newability[counter(0/0.1.HoardExiled) notrg],newability[canplayfromexile],newability[this(counter{0/0.1.HoardExiled}>0) canplayfromexile],newability[@each untap restriction{compare(hascnthoardexiled)~morethan~0}:canplayfromexile])) forever )! +auto=lord(creature[-tapped]|mybattlefield) transforms((,newability[{T}:name(Pay 1 convoke for spell) name(Pay 1 convoke for spell) target(*[-land]|myexile) transforms((,newability[changecost(colorless:-1)])) ueot])) +text=Convoke -- Flying -- When Hoarding Broodlord enters the battlefield, search your library for a card, exile it face down, then shuffle. For as long as that card remains exiled, you may play it. -- Spells you cast from exile have convoke. +mana={5}{B}{B}{B} +type=Creature +subtype=Dragon +power=7 +toughness=6 +[/card] +[card] name=Hoarding Ogre auto=_ATTACKING_name(Roll a d20) rolld20 20 winability token(Treasure Sur)*3 winabilityend loseability if compare(lastrollresult)~lessthan~10 then token(Treasure Sur) else token(Treasure Sur)*2 loseabilityend rolld20end text=Whenever Hoarding Ogre attacks, roll a d20. -- 1-9 | Create a Treasure token. (it's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") -- 10-19 | Create two Treasure tokens. -- 20 | Create three Treasure tokens. @@ -41557,6 +41758,17 @@ power=1 toughness=1 [/card] [card] +name=Ichor Drinker +abilities=lifelink +autograveyard={B}{E}:name(Incubate 2) name(Incubate 2) activate castcard(noevent costx!:2:! named!:Incubator:!) asSorcery +text=Lifelink -- {B}, Exile Ichor Drinker from your graveyard: Incubate 2. Activate only as a sorcery. (Create an Incubator token with two +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) +mana={B} +type=Creature +subtype=Phyrexian Vampire +power=1 +toughness=1 +[/card] +[card] name=Ichor Elixir auto={T}:Add{C}{C} text=If you would roll one or more planar dice, instead roll that many planar dice plus one and ignore one. -- {T}: Add {C}{C}. @@ -41564,6 +41776,17 @@ mana={4} type=Artifact [/card] [card] +name=Ichor Shade +auto=@each my end restriction{morbid}:name(Put 1/1 counter) name(Put 1/1 counter) counter(1/1) +auto=@each my end restriction{type(artifact[-creature&fresh]|mygraveyard)~morethan~0}:name(Put 1/1 counter) name(Put 1/1 counter) counter(1/1) +text=At the beginning of your end step, if an artifact or creature was put into a graveyard from the battlefield this turn, put a +1/+1 counter on Ichor Shade. +mana={2}{B} +type=Creature +subtype=Phyrexian Shade +power=2 +toughness=3 +[/card] +[card] name=Ichor Synthesizer auto=@movedTo(*[-creature]|mystack):counter(0/0,1,oil) auto=this(counter{0/0.1.oil}>3) 2/0 @@ -43449,7 +43672,7 @@ toughness=4 [/card] [card] name=Inspiring Leader -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[lord(creature[token]|mybattlefield) 2/2])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[lord(creature[token]|mybattlefield) 2/2])) text=Commander creatures you own have "Creature tokens you control get +2/+2." mana={2}{W} type=Legendary Enchantment @@ -43642,6 +43865,14 @@ power=6 toughness=6 [/card] [card] +name=Into the Fire +auto=choice name(Deals 2 damage) all(*[creature;planeswalker;battle]|battlefield) damage:2 +auto=choice name(Put cards on bottom) all(*[zpos=1]|mylibrary) moveto(myhand) and!( transforms((,newability[name(Put cards on bottom) target(other *|myhand) bottomoflibrary and!( draw:1 controller )!])) oneshot )! +text=Choose one — -- • Into the Fire deals 2 damage to each creature, planeswalker, and battle. -- • Put any number of cards from your hand on the bottom of your library, then draw that many cards plus one. +mana={2}{R} +type=Sorcery +[/card] +[card] name=Into the Night auto=if type(*[day;night]|battlefield)~equalto~0 then if type(*[nonight]|battlefield)~equalto~0 then name(It becomes night) name(It becomes night) name(It becomes night) activate castcard(noevent named!:Night:!) auto=may name(Discard cards) target(*|myhand) reject and!( draw:1 controller )! @@ -43778,8 +44009,9 @@ name=Invasion of Arcavios backside=Invocation of the Founders restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(backside) +auto=counter(0/0.7.Defense) auto=ability$!name(Search card) name(Search card) target(*[instant;sorcery]|mylibrary,mygraveyard,mysideboard) moveto(myhand)!$ controller -auto=moveto(opponentbattlefield) and!( transforms((,newability[tap(noevent)],newability[doesnotuntap],newability[counter(0/0.7.Defense)])) forever )! +auto=moveto(opponentbattlefield) auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Arcavios enters the battlefield, search your library, graveyard, and/or outside the game for an instant or sorcery card you own, reveal it, and put it into your hand. If you search your library this way, shuffle. mana={3}{U}{U} @@ -43791,8 +44023,9 @@ name=Invasion of Belenon backside=Belenon War Anthem restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(backside) +auto=counter(0/0.3.Defense) auto=name(Create knight) token(Knight,Creature Knight,2/2,white,blue,vigilance) -auto=moveto(opponentbattlefield) and!( transforms((,newability[tap(noevent)],newability[doesnotuntap],newability[counter(0/0.3.Defense)])) forever )! +auto=moveto(opponentbattlefield) auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Belenon enters the battlefield, create a 2/2 white and blue Knight creature token with vigilance. mana={2}{W} @@ -43804,9 +44037,10 @@ name=Invasion of Dominaria backside=Serra Faithkeeper restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(backside) +auto=counter(0/0.5.Defense) auto=name(Gain 4 life) life:4 controller auto=name(Draw a card) draw:1 controller -auto=moveto(opponentbattlefield) and!( transforms((,newability[tap(noevent)],newability[doesnotuntap],newability[counter(0/0.5.Defense)])) forever )! +auto=moveto(opponentbattlefield) auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Angel) )! asSorcery text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Dominaria enters the battlefield, you gain 4 life and draw a card. mana={2}{W} @@ -43814,13 +44048,42 @@ type=Battle subtype=Siege [/card] [card] +name=Invasion of Eldraine +backside=Prickle Faeries +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0.4.Defense) +auto=ability$!name(Discard 2 cards) name(Discard 2 cards) notatarget(<2>*|myhand) reject!$ opponent +auto=moveto(opponentbattlefield) +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Eldraine enters the battlefield, target opponent discards two cards. +mana={3}{B} +type=Battle +subtype=Siege +[/card] +[card] +name=Invasion of Fiora +backside=Marchesa, Resolute Monarch +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0.4.Defense) +auto=ability$!name(Choose one) choice name(Destroy all legendary creatures) all(creature[legendary]|battlefield) destroy _ choice name(Destroy all non-legendary creatures) all(creature[-legendary]|battlefield) destroy _ choice name(Destroy all creatures) all(creature|battlefield) destroy!$ controller +auto=moveto(opponentbattlefield) +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Fiora enters the battlefield, choose one or both -- Destroy all legendary creatures. -- Destroy all nonlegendary creatures. +mana={4}{B}{B} +type=Battle +subtype=Siege +[/card] +[card] name=Invasion of Gobakhan backside=Lightshield Array restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(backside) +auto=counter(0/0.3.Defense) auto=if type(*[-land]|opponenthand)~morethan~0 then ability$!name(Look opponent's hand) name(Look opponent's hand) target(*[-land]|opponenthand) moveto(myreveal) and!( transforms((,newability[choice name(Exile card) moveto(opponentexile) and!( transforms((,newability[canplayfromexile],newability[changecost(colorless:2) forcedalive])) forever )!],newability[choice name(Don't exile card) moveto(opponenthand)])) forever )! !$ controller auto=if type(*[-land]|opponenthand)~equalto~0 then ability$!name(Look opponent's hand) name(Look opponent's hand) target(*|opponenthand) moveto(opponentreveal) and!( moveto(opponenthand) )! !$ controller -auto=moveto(opponentbattlefield) and!( transforms((,newability[tap(noevent)],newability[doesnotuntap],newability[counter(0/0.3.Defense)])) forever )! +auto=moveto(opponentbattlefield) auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Gobakhan enters the battlefield, look at target opponent's hand. You may exile a nonland card from it. For as long as that card remains exiled, its owner may play it. A spell cast this way costs {2} more to cast. mana={1}{W} @@ -43828,12 +44091,97 @@ type=Battle subtype=Siege [/card] [card] +name=Invasion of Ixalan +backside=Belligerent Regisaur +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +aicode=activate transforms((,newability[if type(*[-instant;-sorcery;zpos<=5]|myLibrary)~morethan~0 then target(*[-instant;-sorcery;zpos<=5]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=5]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! else all(*[-instant;-sorcery;zpos<=5]|myLibrary) moveto(myreveal) and!( bottomoflibrary )! ])) oneshot +auto=counter(0/0.4.Defense) +auto=ability$!name(Look top 5 cards) name(Look top 5 cards) reveal:5 optionone name(Get a permanent) target(*[-instant;-sorcery]|reveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend!$ controller +auto=moveto(opponentbattlefield) +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Dinosaur) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Ixalan enters the battlefield, look at the top five cards of your library. You may reveal a permanent card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +mana={1}{G} +type=Battle +subtype=Siege +[/card] +[card] +name=Invasion of Ikoria +backside=Zilortha, Apex of Ikoria +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0.6.Defense) +auto=if compare(fullpaid)~equalto~0 then if type(creature[-human&manacost<=0]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=0]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~0 then if type(creature[-human&manacost<=0]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~1 then if type(creature[-human&manacost<=1]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=1]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~1 then if type(creature[-human&manacost<=1]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~2 then if type(creature[-human&manacost<=2]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=2]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~2 then if type(creature[-human&manacost<=2]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~3 then if type(creature[-human&manacost<=3]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=3]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~3 then if type(creature[-human&manacost<=3]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~4 then if type(creature[-human&manacost<=4]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=4]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~4 then if type(creature[-human&manacost<=4]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~5 then if type(creature[-human&manacost<=5]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=5]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~5 then if type(creature[-human&manacost<=5]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~6 then if type(creature[-human&manacost<=6]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=6]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~6 then if type(creature[-human&manacost<=6]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~7 then if type(creature[-human&manacost<=7]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=7]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~7 then if type(creature[-human&manacost<=7]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~8 then if type(creature[-human&manacost<=8]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=8]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~8 then if type(creature[-human&manacost<=8]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~9 then if type(creature[-human&manacost<=9]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=9]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~9 then if type(creature[-human&manacost<=9]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~10 then if type(creature[-human&manacost<=10]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=10]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~10 then if type(creature[-human&manacost<=10]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~11 then if type(creature[-human&manacost<=11]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=11]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~11 then if type(creature[-human&manacost<=11]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~12 then if type(creature[-human&manacost<=12]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=12]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~12 then if type(creature[-human&manacost<=12]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~13 then if type(creature[-human&manacost<=13]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=13]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~13 then if type(creature[-human&manacost<=13]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~14 then if type(creature[-human&manacost<=14]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=14]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~14 then if type(creature[-human&manacost<=14]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~15 then if type(creature[-human&manacost<=15]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=15]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~15 then if type(creature[-human&manacost<=15]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~16 then if type(creature[-human&manacost<=16]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=16]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~16 then if type(creature[-human&manacost<=16]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~17 then if type(creature[-human&manacost<=17]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=17]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~17 then if type(creature[-human&manacost<=17]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~18 then if type(creature[-human&manacost<=18]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=18]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~18 then if type(creature[-human&manacost<=18]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~equalto~19 then if type(creature[-human&manacost<=19]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=19]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~equalto~19 then if type(creature[-human&manacost<=19]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=if compare(fullpaid)~morethan~19 then if type(creature[-human&manacost<=20]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=20]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! +auto=if compare(fullpaid)~morethan~19 then if type(creature[-human&manacost<=20]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Legendary Creature Dinosaur) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Ikoria enters the battlefield, search your library and/or graveyard for a non-Human creature card with mana value X or less and put it onto the battlefield. If you search your library this way, shuffle. +mana={X}{G}{G} +type=Battle +subtype=Siege +[/card] +[card] +name=Invasion of Innistrad +abilities=flash +backside=Deluge of the Dead +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0.5.Defense) +auto=ability$!name(Creature gets -13/-13) name(Creature gets -13/-13) target(creature|opponentBattlefield) -13/-13 ueot!$ controller +auto=moveto(opponentbattlefield) +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- Flash -- When Invasion of Innistrad enters the battlefield, target creature an opponent controls gets -13/-13 until end of turn. +mana={2}{B}{B} +type=Battle +subtype=Siege +[/card] +[card] name=Invasion of Kamigawa backside=Rooftop Saboteurs restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(backside) -auto=ability$!name(Tap creature or artifact) name(Tap creature or artifact) target(*[creature;artifact]|opponentbattlefield) transforms((,newability[tap],newability[counter(0/0.1.Stun)],newability[this(counter{0/0.1.Stun}>=1) doesnotuntap],newability[@each my untap restriction{compare(hascntstun)~morethan~0}:name(Remove a stun counter) name(Remove a stun counter) counter(0/0.-1.Stun)])) forever!$ controller -auto=moveto(opponentbattlefield) and!( transforms((,newability[tap(noevent)],newability[doesnotuntap],newability[counter(0/0.4.Defense)])) forever )! +auto=counter(0/0.4.Defense) +auto=ability$!name(Tap creature or artifact) name(Tap creature or artifact) target(*[creature;artifact]|opponentbattlefield) transforms((,newability[tap],newability[counter(0/0.1.Stun)])) oneshot!$ controller +auto=moveto(opponentbattlefield) auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Moonfolk Ninja) )! asSorcery text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Kamigawa enters the battlefield, tap target artifact or creature an opponent controls and put a stun counter on it. (If a permanent with a stun counter would become untapped, remove one from it instead.) mana={3}{U} @@ -43841,12 +44189,69 @@ type=Battle subtype=Siege [/card] [card] +name=Invasion of Karsus +backside=Refraction Elemental +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0.4.Defense) +auto=ability$!name(Damage creatures and planeswalkers) name(Damage creatures and planeswalkers) all(*[creature;planeswalker]|battlefield) damage:3!$ controller +auto=moveto(opponentbattlefield) +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Karsus enters the battlefield, it deals 3 damage to each creature and each planeswalker. +mana={2}{R}{R} +type=Battle +subtype=Siege +[/card] +[card] +name=Invasion of Kaldheim +backside=Pyre of the World Tree +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0.4.Defense) +auto=name(Exile cards) name(Exile cards) all(*|myhand) moveto(myexile) and!( transforms((,newability[draw:1 controller],newability[counter(0/0.1.InvasionExiled) notrg],newability[this(counter{0/0.1.InvasionExiled}>0) canplayfromexile],newability[@each untap restriction{compare(hascntinvasionexiled)~morethan~0}:transforms((,newability[canplayfromexile])) ueot],newability[@each my upkeep restriction{compare(hascntinvasionexiled)~morethan~0}:removeallcounters(0/0.1.InvasionExiled)])) forever )! +auto=moveto(opponentbattlefield) +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Kaldheim enters the battlefield, exile all cards from your hand, then draw that many cards. Until the end of your next turn, you may play cards exiled this way. +mana={3}{R} +type=Battle +subtype=Siege +[/card] +[card] +name=Invasion of Mercadia +backside=Kyren Flamewright +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0.4.Defense) +auto=ability$!may name(Discard and draw) target(*|myhand) reject and!( draw:2 controller )!!$ controller +auto=moveto(opponentbattlefield) +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Mercadia enters the battlefield, you may discard a card. If you do, draw two cards. +mana={1}{R} +type=Battle +subtype=Siege +[/card] +[card] +name=Invasion of Muraganda +backside=Primordial Plasm +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0.6.Defense) +auto=ability$!name(Put counter and fight) name(Put counter and fight) target(creature|mybattlefield) transforms((,newability[counter(1/1)],newability[may name(Fights another creature) target(creature|opponentbattlefield) dynamicability])) ueot!$ controller +auto=moveto(opponentbattlefield) +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Ooze) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Muraganda enters the battlefield, put a +1/+1 counter on target creature you control. Then that creature fights up to one target creature you don't control. +mana={4}{G} +type=Battle +subtype=Siege +[/card] +[card] name=Invasion of Ravnica backside=Guildpact Paragon restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(backside) -auto=name(Exile opponent permanent) target(*[multicolor]|opponentbattlefield) moveto(exile) -auto=moveto(opponentbattlefield) and!( transforms((,newability[tap(noevent)],newability[doesnotuntap],newability[counter(0/0.4.Defense)])) forever )! +auto=counter(0/0.4.Defense) +auto=ability$!name(Exile opponent permanent) target(*[multicolor]|opponentbattlefield) moveto(exile)!$ controller +auto=moveto(opponentbattlefield) auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Artifact Creature Construct) )! asSorcery text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Ravnica enters the battlefield, exile target nonland permanent an opponent controls that isn't exactly two colors. mana={5} @@ -43854,12 +44259,27 @@ type=Battle subtype=Siege [/card] [card] +name=Invasion of Regatha +backside=Disciples of the Inferno +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0.5.Defense) +auto=ability$!may name(Damage creature) name(Damage creatures) target(creature|battlefield) damage:1!$ controller +auto=transforms((,newability[choice name(Damage opponent) damage:4 opponent && all(this) moveto(opponentbattlefield)],newability[choice name(Damage other battle) target(other *[battle]|battlefield) damage:4 && all(this) moveto(opponentbattlefield)])) oneshot +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Regatha enters the battlefield, it deals 4 damage to another target battle or opponent and 1 damage to up to one target creature. +mana={2}{R} +type=Battle +subtype=Siege +[/card] +[card] name=Invasion of Segovia backside=Caetus, Sea Tyrant of Segovia restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(backside) +auto=counter(0/0.4.Defense) auto=name(Create 2 Kraken) token(Kraken,Creature Kraken,1/1,blue,trample)*2 -auto=moveto(opponentbattlefield) and!( transforms((,newability[tap(noevent)],newability[doesnotuntap],newability[counter(0/0.4.Defense)])) forever )! +auto=moveto(opponentbattlefield) auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Legendary Creature Serpent) )! asSorcery text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Segovia enters the battlefield, create two 1/1 blue Kraken creature tokens with trample. mana={2}{U} @@ -43867,15 +44287,29 @@ type=Battle subtype=Siege [/card] [card] -name=Invasion of Theros -backside=Ephara, Ever-Sheltering +name=Invasion of Shandalar +backside=Leyline Surge restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(backside) -auto=ability$!name(Search library) name(Search library) target(*[aura;god;demigod]|mylibrary) moveto(myhand) and!( shuffle )! !$ controller -auto=moveto(opponentbattlefield) and!( transforms((,newability[tap(noevent)],newability[doesnotuntap],newability[counter(0/0.4.Defense)])) forever )! -auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Legendary Enchantment Creature) )! asSorcery -text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Theros enters the battlefield, search your library for an Aura, God, or Demigod card, reveal it, put it into your hand, then shuffle. -mana={2}{W} +auto=counter(0/0.6.Defense) +auto=ability$!may name(Return 3 permanents) target(*[-instant;-sorcery]|mygraveyard) moveto(ownerhand)!$ controller +auto=moveto(opponentbattlefield) +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Shandalar enters the battlefield, return up to three target permanent cards from your graveyard to your hand. +mana={3}{G}{G} +type=Battle +subtype=Siege +[/card] +[card] +name=Invasion of Tarkir +backside=Defiant Thundermaw +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0.5.Defense) +auto=transforms((,newability[choice name(Damage player) damage:type:dragon:myhandplus2plusend target(player) && all(this) moveto(opponentbattlefield)],newability[choice name(Damage permanent) target(other *|battlefield) damage:type:dragon:myhandplus2plusend && all(this) moveto(opponentbattlefield)])) oneshot +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Tarkir enters the battlefield, reveal any number of Dragon cards from your hand. When you do, Invasion of Tarkir deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) +mana={1}{R} type=Battle subtype=Siege [/card] @@ -43894,12 +44328,42 @@ type=Enchantment subtype=Saga [/card] [card] +name=Invasion of Theros +backside=Ephara, Ever-Sheltering +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0.4.Defense) +auto=ability$!name(Search library) name(Search library) target(*[aura;god;demigod]|mylibrary) moveto(myhand) and!( shuffle )! !$ controller +auto=moveto(opponentbattlefield) +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Legendary Enchantment Creature) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Theros enters the battlefield, search your library for an Aura, God, or Demigod card, reveal it, put it into your hand, then shuffle. +mana={2}{W} +type=Battle +subtype=Siege +[/card] +[card] +name=Invasion of Ulgrotha +backside=Grandmother Ravi Sengir +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0.5.Defense) +auto=ability$!name(Deals 3 damage) name(Deals 3 damage) target(player,creature,planeswalker) damage:3!$ controller +auto=name(Gain 3 life) life:3 controller +auto=moveto(opponentbattlefield) +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Legendary Creature Human Wizard) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Ulgrotha enters the battlefield, it deals 3 damage to any other target and you gain 3 life. +mana={4}{B} +type=Battle +subtype=Siege +[/card] +[card] name=Invasion of Vryn backside=Overloaded Mage-Ring restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(backside) +auto=counter(0/0.4.Defense) auto=draw:3 controller && ability$!name(Discard a card) name(Discard a card) reject notatarget(*|myhand)!$ controller -auto=moveto(opponentbattlefield) and!( transforms((,newability[tap(noevent)],newability[doesnotuntap],newability[counter(0/0.4.Defense)])) forever )! +auto=moveto(opponentbattlefield) auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Artifact) )! asSorcery text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Vryn enters the battlefield, draw three cards, then discard a card. mana={3}{U} @@ -43907,6 +44371,20 @@ type=Battle subtype=Siege [/card] [card] +name=Invasion of Zendikar +backside=Awakened Skyclave +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0.6.Defense) +auto=ability$!may name(Search 2 basic lands) target(land[basic]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[tap(noevent)],newability[shuffle])) oneshot )!!$ controller +auto=moveto(opponentbattlefield) +auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Elemental) )! asSorcery +text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Zendikar enters the battlefield, search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle. +mana={3}{G} +type=Battle +subtype=Siege +[/card] +[card] name=Invert // Invent other={4}{U}{R} name(Invent) auto=ifnot paid(alternative) then target(creature) transforms((,setpower=toughness,settoughness=power)) ueot @@ -44673,7 +45151,7 @@ type=Instant [/card] [card] name=Jaheira, Friend of the Forest -abilities=backgoundpartner +abilities=backgroundpartner auto=lord(*[Token]|myBattlefield) {T}:Add{G} text=Tokens you control have "{T}: Add {G}." -- Choose a Background (You can have a Background as a second commander.) mana={2}{G} @@ -45011,6 +45489,21 @@ power=3 toughness=3 [/card] [card] +name=Jin-Gitaxias +backside=The Great Synthesis +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=_WARD_(2) +auto=@movedTo(*[-creature&manacost>=3]|mystack) restriction{compare(isflipped)~equalto~0}:name(Draw a card) name(Draw a card) name(Draw a card) draw:1 controller +auto=this(variable{type:*:myhand}>6) {3}{U}:name(Exile and transform) name(Exile and transform) all(this) moveto(myexile) and!( flip(backside) forcetype(Enchantment Saga) )! asSorcery +text=Ward {2} -- Whenever you cast a noncreature spell with mana value 3 or greater, draw a card. -- {3}{U}: Exile Jin-Gitaxias, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery and only if you have seven or more cards in hand. +mana={3}{U}{U} +type=Legendary Creature +subtype=Phyrexian Praetor +power=5 +toughness=5 +[/card] +[card] name=Jin-Gitaxias, Progress Tyrant auto=@movedTo(artifact,instant,sorcery|mystack) turnlimited:all(trigger[to]) transforms((,newability[activate castcard(copied noevent)])) forever auto=@movedto(artifact,instant,sorcery|opponentstack):all(trigger[to]) transforms((,newability[fizzle])) forever @@ -45999,8 +46492,8 @@ toughness=3 [/card] [card] name=Karlach, Fury of Avernus -abilities=backgoundpartner -auto=@combat(attacking) source(this) turnlimited:untap all(creature[attacking]) && first strike ueot && nextphasealter(add,combatphases,controller,after) +abilities=backgroundpartner +auto=@combat(attacking) source(this) turnlimited:untap all(creature[attacking]) && all(creature[attacking]) first strike ueot && nextphasealter(add,combatphases,controller,after) text=Whenever you attack, if it's the first combat phase of the turn, untap all attacking creatures. They gain first strike until end of turn. After this phase, there is an additional combat phase. -- Choose a Background (You can have a Background as a second commander.) mana={4}{R} type=Legendary Creature @@ -47273,22 +47766,6 @@ power=4 toughness=5 [/card] [card] -name=Knight-Errant of Eos -aicode=activate target(*[zpos=1]|mylibrary) transforms((,newability[if type(*[creature&zpos<=6&manacost=0]|mylibrary)~equalto~0 then all(*[zpos<=6]|mylibrary) moveto(myreveal) and!( moveto(mylibrary) and!(shuffle)! )!],newability[if type(*[creature&zpos<=6&mancost=0]|mylibrary)~morethan~0 then target(*[creature&zpos<=6&mancost=0]|mylibrary) moveto(myhand) and!( transforms((,newability[all(*[zpos<=6]|mylibrary) moveto(myreveal) and!( moveto(mylibrary) and!(shuffle)! )!])) oneshot )! ])) oneshot -other={convoke} name(Convoke) -auto=if paid(alternative) then if type(creature[tapped;-attacking]|myBattlefield)~equalto~1 then name(Look top 6 cards) name(Look top 6 cards) name(Look top 6 cards) reveal:6 optionone name(Put in hand) target(creature[manacost<=1]|myreveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(<6>*|reveal) moveto(mylibrary) and!( shuffle )! optiontwoend revealend -auto=if paid(alternative) then if type(creature[tapped;-attacking]|myBattlefield)~equalto~2 then name(Look top 6 cards) name(Look top 6 cards) name(Look top 6 cards) reveal:6 optionone name(Put in hand) target(creature[manacost<=2]|myreveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(<6>*|reveal) moveto(mylibrary) and!( shuffle )! optiontwoend revealend -auto=if paid(alternative) then if type(creature[tapped;-attacking]|myBattlefield)~equalto~3 then name(Look top 6 cards) name(Look top 6 cards) name(Look top 6 cards) reveal:6 optionone name(Put in hand) target(creature[manacost<=3]|myreveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(<6>*|reveal) moveto(mylibrary) and!( shuffle )! optiontwoend revealend -auto=if paid(alternative) then if type(creature[tapped;-attacking]|myBattlefield)~morethan~3 then name(Look top 6 cards) name(Look top 6 cards) name(Look top 6 cards) reveal:6 optionone name(Put in hand) target(creature[manacost<=4]|myreveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(<6>*|reveal) moveto(mylibrary) and!( shuffle )! optiontwoend revealend -auto=ifnot paid(alternative) then name(Look top 6 cards) name(Look top 6 cards) reveal:6 optionone name(Put in hand) target(creature[manacost=0]|myreveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(<6>*|reveal) moveto(mylibrary) and!( shuffle )! optiontwoend revealend -text=Convoke -- When Knight-Errant of Eos enters the battlefield, look at the top six cards of your library. You may reveal up to two creature cards with mana value X or less from among them, where X is the number of creatures that convoked Knight-Errant of Eos. Put the revealed cards into your hand, then shuffle. -mana={4}{W} -type=Creature -subtype=Human Knight -power=4 -toughness=4 -[/card] -[card] name=Knight Bas abilities=vigilance type=Creature @@ -47488,6 +47965,22 @@ type=Enchantment subtype=Aura [/card] [card] +name=Knight-Errant of Eos +aicode=activate target(*[zpos=1]|mylibrary) transforms((,newability[if type(*[creature&zpos<=6&manacost=0]|mylibrary)~equalto~0 then all(*[zpos<=6]|mylibrary) moveto(myreveal) and!( moveto(mylibrary) and!(shuffle)! )!],newability[if type(*[creature&zpos<=6&mancost=0]|mylibrary)~morethan~0 then target(*[creature&zpos<=6&mancost=0]|mylibrary) moveto(myhand) and!( transforms((,newability[all(*[zpos<=6]|mylibrary) moveto(myreveal) and!( moveto(mylibrary) and!(shuffle)! )!])) oneshot )! ])) oneshot +other={convoke} name(Convoke) +auto=if paid(alternative) then if type(creature[tapped;-attacking]|myBattlefield)~equalto~1 then name(Look top 6 cards) name(Look top 6 cards) name(Look top 6 cards) reveal:6 optionone name(Put in hand) target(creature[manacost<=1]|myreveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(<6>*|reveal) moveto(mylibrary) and!( shuffle )! optiontwoend revealend +auto=if paid(alternative) then if type(creature[tapped;-attacking]|myBattlefield)~equalto~2 then name(Look top 6 cards) name(Look top 6 cards) name(Look top 6 cards) reveal:6 optionone name(Put in hand) target(creature[manacost<=2]|myreveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(<6>*|reveal) moveto(mylibrary) and!( shuffle )! optiontwoend revealend +auto=if paid(alternative) then if type(creature[tapped;-attacking]|myBattlefield)~equalto~3 then name(Look top 6 cards) name(Look top 6 cards) name(Look top 6 cards) reveal:6 optionone name(Put in hand) target(creature[manacost<=3]|myreveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(<6>*|reveal) moveto(mylibrary) and!( shuffle )! optiontwoend revealend +auto=if paid(alternative) then if type(creature[tapped;-attacking]|myBattlefield)~morethan~3 then name(Look top 6 cards) name(Look top 6 cards) name(Look top 6 cards) reveal:6 optionone name(Put in hand) target(creature[manacost<=4]|myreveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(<6>*|reveal) moveto(mylibrary) and!( shuffle )! optiontwoend revealend +auto=ifnot paid(alternative) then name(Look top 6 cards) name(Look top 6 cards) reveal:6 optionone name(Put in hand) target(creature[manacost=0]|myreveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(<6>*|reveal) moveto(mylibrary) and!( shuffle )! optiontwoend revealend +text=Convoke -- When Knight-Errant of Eos enters the battlefield, look at the top six cards of your library. You may reveal up to two creature cards with mana value X or less from among them, where X is the number of creatures that convoked Knight-Errant of Eos. Put the revealed cards into your hand, then shuffle. +mana={4}{W} +type=Creature +subtype=Human Knight +power=4 +toughness=4 +[/card] +[card] name=Knighted Myr auto={2}{W}:_ADAPT_(1) auto=@counteradded(1/1) from(this):name(Gains double strike) transforms((,newability[double strike])) ueot @@ -48247,6 +48740,16 @@ mana={3} type=Artifact [/card] [card] +name=Kyren Flamewright +auto={2}{R}{T}{D(*|myhand)}:name(Create elementals) token(Elemental,Creature Elemental,1/1,blue,red:)*2 && all(creature|myBattlefield) transforms((,newability[haste],newability[1/0])) ueot +text={2}{R}, {T}, Discard a card: Create two 1/1 blue and red Elemental creature tokens. Creatures you control get +1/+0 and gain haste until end of turn. +color=red +type=Creature +subtype=Goblin Spellshaper +power=3 +toughness=3 +[/card] +[card] name=Kytheon, Hero of Akros backside=Gideon, Battle-Forged restriction=compare(isflipped)~equalto~0 @@ -49365,6 +49868,13 @@ power=2 toughness=3 [/card] [card] +name=Leyline Surge +auto=@each my upkeep:may name(Put permanent in play) target(*[-sorcery;-instant]|myhand) moveto(mybattlefield) +text=At the beginning of your upkeep, you may put a permanent card from your hand onto the battlefield. +color=green +type=Enchantment +[/card] +[card] name=Leyline Tyrant abilities=flying auto=mypoolsave(red) @@ -51122,7 +51632,7 @@ toughness=4 [/card] [card] name=Lulu, Loyal Hollyphant -abilities=flying,backgoundpartner +abilities=flying,backgroundpartner auto=@each my end restriction{revolt}:all(creature[tapped]|myBattlefield) untap auto=@each my end restriction{revolt}:all(creature[tapped]|myBattlefield) counter(1/1) text=Flying -- At the beginning of your end step, if a permanent you controlled left the battlefield this turn, put a +1/+1 counter on each tapped creature you control, then untap them. -- Choose a Background (You can have a Background as a second commander.) @@ -52378,6 +52888,19 @@ power=3 toughness=3 [/card] [card] +name=Marauding Dreadship +abilities=haste +auto=name(Incubate 2) name(Incubate 2) activate castcard(noevent costx!:2:! named!:Incubator:!) +auto={crew(other creature[power>=2]|myBattlefield)}:name(crew 2 [1 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=2]|mybattlefield)~morethan~0,compare(crewtotalpower)~morethan~1} +auto={crew(other creature[power>=1]|myBattlefield)}{crew(other creature[power>=1]|myBattlefield)}:name(crew 2 [2 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=1]|mybattlefield)~morethan~1,compare(crewtotalpower)~morethan~1} +text=Haste -- When Marauding Dreadship enters the battlefield, incubate 2. (Create an Incubator token with two +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) -- Crew 2 (Tap any number of creatures you control with total power 2 or more: This Vehicle becomes an artifact creature until end of turn.) +mana={2}{R} +type=Artifact +subtype=Vehicle +power=4 +toughness=1 +[/card] +[card] name=Marauding Looter auto=@each my endofturn:if raid then may _LOOT_ text=Raid - At the beginning of your end step, if you attacked with a creature this turn, you may draw a card. If you do, discard a card. @@ -52475,6 +52998,20 @@ mana={3}{B} type=Enchantment [/card] [card] +name=Marchesa, Resolute Monarch +abilities=deathtouch,menace +auto=_ATTACKING_may name(Remove all counters) target(*|battlefield) removeallcounters(all) +auto=@combatdamageof(player) from(*|opponentbattlefield) turnlimited:name(Combat damage received) name(Combat damage received) counter(0/0.1.MarchesaEffect) notrg +auto=@each my upkeep restriction{compare(hascntmarchesaeffect)~equalto~0}:name(Draw and loose life) name(Draw and loose life) transforms((,newability[draw:1 controller],newability[life:-1 controller])) oneshot +auto=@each my upkeep restriction{compare(hascntmarchesaeffect)~morethan~0}:name(Effect ends) name(Effect ends) removeallcounters(0/0.1.MarchesaEffect) +text=Menace, deathtouch -- Whenever Marchesa, Resolute Monarch attacks, remove all counters from up to one target permanent. -- At the beginning of your upkeep, if you haven't been dealt combat damage since your last turn, you draw a card and you lose 1 life. +color=black +type=Legendary Creature +subtype=Human Noble +power=3 +toughness=6 +[/card] +[card] name=Marching Duodrone auto=_ATTACKING_token(treasure sur) controller && token(treasure sur) opponent text=Whenever Marching Duodrone attacks, each player creates a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") @@ -52869,7 +53406,7 @@ type=Instant [/card] [card] name=Master Chef -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[@movedto(other creature|mybattlefield):name(Put 1/1 counter) all(trigger[to]) counter(1/1)])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[@movedto(other creature|mybattlefield):name(Put 1/1 counter) all(trigger[to]) counter(1/1)])) auto=@movedto(creature[iscommander]|mybattlefield):name(Put 1/1 counter) all(trigger[to]) counter(1/1) text=Commander creatures you own have "This creature enters the battlefield with an additional +1/+1 counter on it" and "Other creatures you control enter the battlefield with an additional +1/+1 counter on them." mana={2}{G} @@ -53426,6 +53963,15 @@ power=4 toughness=2 [/card] [card] +name=Merciless Repurposing +target=creature +auto=moveto(exile) +auto=name(Incubate 3) name(Incubate 3) activate castcard(noevent costx!:3:! named!:Incubator:!) +text=Exile target creature. Incubate 3. (Create an Incubator token with three +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) +mana={4}{B}{B} +type=Instant +[/card] +[card] name=Mercurial Transformation target=*[-land]|battlefield other={1}{U} name(Choose octopus) @@ -55803,7 +56349,7 @@ type=Sorcery [/card] [card] name=Mummy Paramount -auto=@movedto(other Zombie|battlefield):1/1 +auto=@movedto(other Zombie|battlefield):1/1 ueot text=Whenever another Zombie enters the battlefield under your control, Mummy Paramount gets +1/+1 until end of turn. mana={1}{W} type=Creature @@ -56504,6 +57050,19 @@ mana={1}{R} type=Instant [/card] [card] +name=Nahiri's Warcrafting +target=creature,planeswalker,battle +aicode=activate transforms((,newability[target(*[zpos<=3]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[all(*[zpos<=3]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) ueot )!])) oneshot +auto=if cantargetcard(*[toughness=1]|*) then name(Look top 4 cards) name(Look top 4 cards) reveal:4 optionone name(Exile a card) target(*|reveal) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! optiononeend optiontwo name(Put on bottom) target(<1>*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto=if cantargetcard(*[toughness=2]|*) then name(Look top 3 cards) name(Look top 3 cards) reveal:3 optionone name(Exile a card) target(*|reveal) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! optiononeend optiontwo name(Put on bottom) target(<1>*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto=if cantargetcard(*[toughness=3]|*) then name(Look top 2 cards) name(Look top 2 cards) reveal:2 optionone name(Exile a card) target(*|reveal) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! optiononeend optiontwo name(Put on bottom) target(<1>*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto=if cantargetcard(*[toughness=4]|*) then name(Look top card) name(Look top card) reveal:1 optionone name(Exile a card) target(*|reveal) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! optiononeend optiontwo name(Put on bottom) target(<1>*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto=damage:5 +text=Nahiri's Warcrafting deals 5 damage to target creature, planeswalker, or battle. Look at the top X cards of your library, where X is the excess damage dealt this way. You may exile one of those cards. Put the rest on the bottom of your library in a random order. You may play the exiled card this turn. +mana={1}{R}{R} +type=Sorcery +[/card] +[card] name=Naiad of Hidden Coves auto=aslongas opponentturnonly: (*|mycastingzone) changecost(colorless:-1) text=As long as it's not your turn, spells you cast cost {1} less to cast. @@ -59016,6 +59575,17 @@ type=Enchantment subtype=Aura [/card] [card] +name=Oculus Whelp +abilities=flying +auto=aslongas(*[isflipped]|mybattlefield) transforms((,newability[@movedTo(this|graveyard) from(battlefield):name(Draw a card) name(Draw a card) draw:1 controller])) +text=Flying -- As long as you control a transformed permanent, Oculus Whelp has "When Oculus Whelp dies, draw a card." +mana={3}{U} +type=Creature +subtype=Phyrexian Dragon +power=3 +toughness=2 +[/card] +[card] name=Odious Witch backside=Ragged Recluse auto=_ATTACKING_name(Gain 1 life) life:1 controller && life:-1 opponent @@ -59421,6 +59991,16 @@ power=4 toughness=5 [/card] [card] +name=Omen Hawker +auto={T}:name(Add mana) add{C}{U} +text={T}: Add {C}{U}. Spend this mana only to activate abilities. +mana={U} +type=Creature +subtype=Cephalid Advisor +power=1 +toughness=1 +[/card] +[card] name=Omen of Fire auto=moveTo(ownerhand) all(island) auto=foreach(*[white]|mybattlefield) name(Choose one) ability$!name(Sacrifice plains) choice name(Sacrifice plains) sacrifice notAtarget(plains|mybattlefield) _ choice name(Sacrifice white permanent) sacrifice notatarget(*[white]|mybattlefield)!$ controller @@ -59907,6 +60487,17 @@ power=3 toughness=1 [/card] [card] +name=Oracle of Tragedy +auto=name(Choose one) transforms((,newability[if type(*[manacost>=3]|mygraveyard)~morethan~0 then choice name(Shuffle 4 cards) name(Shuffle 4 cards) target(*[manacost>=3]|mygraveyard) moveto(mylibrary) and!( shuffle )!],newability[choice name(Draw and discard) all(*[zpos=1]|mylibrary) moveto(myhand) and!( transforms((,newability[name(Discard a card) target(*|myhand) reject])) oneshot )!])) oneshot +auto=_DIES_name(Choose one) transforms((,newability[if type(*[manacost>=3]|mygraveyard)~morethan~0 then choice name(Shuffle 4 cards) name(Shuffle 4 cards) target(*[manacost>=3]|mygraveyard) moveto(mylibrary) and!( shuffle )!],newability[choice name(Draw and discard) all(*[zpos=1]|mylibrary) moveto(myhand) and!( transforms((,newability[name(Discard a card) target(*|myhand) reject])) oneshot )!])) oneshot +text=When Oracle of Tragedy enters the battlefield or dies, choose one -- Draw a card, then discard a card. -- Shuffle up to four target cards with mana value 3 or greater from your graveyard into your library. +mana={1}{U} +type=Creature +subtype=Human Wizard +power=1 +toughness=3 +[/card] +[card] name=Oracle's Attendants auto={T}:name(Target your creature) target(creature|mybattlefield) transforms((,newability[undamageable],newability[_ENRAGE_damage:thatmuch target(Oracle's Attendants|mybattlefield)])) ueot auto={T}:name(Target opponent's creature) target(creature|opponentbattlefield) transforms((,newability[undamageable],newability[_ENRAGE_damage:thatmuch target(Oracle's Attendants|opponentbattlefield)])) ueot @@ -60689,7 +61280,7 @@ toughness=2 [/card] [card] name=Overloaded Mage-Ring -auto={1}{T}{S}:name(Copy permanent) target(*[-instant;-sorcery]|mystack) transforms(((,newability[clone])) oneshot +auto={1}{T}{S}:name(Copy permanent) target(*[-instant;-sorcery]|mystack) transforms((,newability[clone])) oneshot auto={1}{T}{S}:name(Copy spell) target(*[instant;sorcery]|mystack) activate castcard(copied noevent) text={1}, {T}, Sacrifice Overloaded Mage-Ring: Copy target spell you control. You may choose new targets for the copy. (A copy of a permanent spell becomes a token.) type=Artifact @@ -61481,7 +62072,7 @@ toughness=2 [/card] [card] name=Passionate Archaeologist -auto=lord(*[iscommander]|myBattlefield) transforms((,newability[@movedTo(*[manacost=1]|mystack) from(myexile):name(Deals 1 damage) damage:1 opponent],newability[@movedTo(*[manacost=2]|mystack) from(myexile):name(Deals 2 damage) damage:2 opponent],newability[@movedTo(*[manacost=3]|mystack) from(myexile):name(Deals 3 damage) damage:3 opponent],newability[@movedTo(*[manacost=4]|mystack) from(myexile):name(Deals 4 damage) damage:4 opponent],newability[@movedTo(*[manacost=5]|mystack) from(myexile):name(Deals 5 damage) damage:5 opponent],newability[@movedTo(*[manacost=6]|mystack) from(myexile):name(Deals 6 damage) damage:6 opponent],newability[@movedTo(*[manacost=7]|mystack) from(myexile):name(Deals 7 damage) damage:7 opponent],newability[@movedTo(*[manacost=8]|mystack) from(myexile):name(Deals 8 damage) damage:8 opponent],newability[@movedTo(*[manacost=9]|mystack) from(myexile):name(Deals 9 damage) damage:9 opponent],newability[@movedTo(*[manacost=10]|mystack) from(myexile):name(Deals 10 damage) damage:10 opponent],newability[@movedTo(*[manacost=11]|mystack) from(myexile):name(Deals 11 damage) damage:11 opponent],newability[@movedTo(*[manacost=12]|mystack) from(myexile):name(Deals 12 damage) damage:12 opponent],newability[@movedTo(*[manacost=13]|mystack) from(myexile):name(Deals 13 damage) damage:13 opponent],newability[@movedTo(*[manacost=14]|mystack) from(myexile):name(Deals 14 damage) damage:14 opponent],newability[@movedTo(*[manacost=15]|mystack) from(myexile):name(Deals 15 damage) damage:15 opponent],newability[@movedTo(*[manacost=16]|mystack) from(myexile):name(Deals 16 damage) damage:16 opponent],newability[@movedTo(*[manacost=17]|mystack) from(myexile):name(Deals 17 damage) damage:17 opponent],newability[@movedTo(*[manacost=18]|mystack) from(myexile):name(Deals 18 damage) damage:18 opponent],newability[@movedTo(*[manacost=19]|mystack) from(myexile):name(Deals 19 damage) damage:19 opponent],newability[@movedTo(*[manacost>=19]|mystack) from(myexile):name(Deals 20 damage) damage:20 opponent])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[@movedTo(*[manacost=1]|mystack) from(myexile):name(Deals 1 damage) damage:1 opponent],newability[@movedTo(*[manacost=2]|mystack) from(myexile):name(Deals 2 damage) damage:2 opponent],newability[@movedTo(*[manacost=3]|mystack) from(myexile):name(Deals 3 damage) damage:3 opponent],newability[@movedTo(*[manacost=4]|mystack) from(myexile):name(Deals 4 damage) damage:4 opponent],newability[@movedTo(*[manacost=5]|mystack) from(myexile):name(Deals 5 damage) damage:5 opponent],newability[@movedTo(*[manacost=6]|mystack) from(myexile):name(Deals 6 damage) damage:6 opponent],newability[@movedTo(*[manacost=7]|mystack) from(myexile):name(Deals 7 damage) damage:7 opponent],newability[@movedTo(*[manacost=8]|mystack) from(myexile):name(Deals 8 damage) damage:8 opponent],newability[@movedTo(*[manacost=9]|mystack) from(myexile):name(Deals 9 damage) damage:9 opponent],newability[@movedTo(*[manacost=10]|mystack) from(myexile):name(Deals 10 damage) damage:10 opponent],newability[@movedTo(*[manacost=11]|mystack) from(myexile):name(Deals 11 damage) damage:11 opponent],newability[@movedTo(*[manacost=12]|mystack) from(myexile):name(Deals 12 damage) damage:12 opponent],newability[@movedTo(*[manacost=13]|mystack) from(myexile):name(Deals 13 damage) damage:13 opponent],newability[@movedTo(*[manacost=14]|mystack) from(myexile):name(Deals 14 damage) damage:14 opponent],newability[@movedTo(*[manacost=15]|mystack) from(myexile):name(Deals 15 damage) damage:15 opponent],newability[@movedTo(*[manacost=16]|mystack) from(myexile):name(Deals 16 damage) damage:16 opponent],newability[@movedTo(*[manacost=17]|mystack) from(myexile):name(Deals 17 damage) damage:17 opponent],newability[@movedTo(*[manacost=18]|mystack) from(myexile):name(Deals 18 damage) damage:18 opponent],newability[@movedTo(*[manacost=19]|mystack) from(myexile):name(Deals 19 damage) damage:19 opponent],newability[@movedTo(*[manacost>=19]|mystack) from(myexile):name(Deals 20 damage) damage:20 opponent])) text=Commander creatures you own have "Whenever you cast a spell from exile, this creature deals damage equal to that spell's mana value to target opponent." mana={1}{R} type=Legendary Enchantment @@ -62255,7 +62846,7 @@ toughness=5 [card] name=Phyrexian backside=Incubator -auto=_DIES_:all(Brimaz, Blight of Oreskos|mybattlefield) name(Phyrexian died) counter(0/0.1.BrimazEffect) notrg +auto=counter(0/0.1.Phyrexian) notrg type=Artifact Creature subtype=Phyrexian power=0 @@ -63574,7 +64165,7 @@ toughness=3 [/card] [card] name=Popular Entertainer -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[@each combatdamage restriction{myturnonly}:if compare(opponentdamagedbycombat)~morethan~0 then name(Goad a creature) name(Goad a creature) target(creature|opponentbattlefield) _GOAD_])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[@each combatdamage restriction{myturnonly}:if compare(opponentdamagedbycombat)~morethan~0 then name(Goad a creature) name(Goad a creature) target(creature|opponentbattlefield) _GOAD_])) text=Commander creatures you own have "Whenever one or more creatures you control deal combat damage to a player, goad target creature that player controls." (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.) mana={1}{R} type=Legendary Enchantment @@ -64065,7 +64656,7 @@ type=Sorcery [card] name=Prickle Faeries abilities=flying -auto=@each opponent upkeep restriction{type(*|opponenthand)~lessthan~3}:damage:2 opponent +auto=@each opponent upkeep restriction{type(*|opponenthand)~lessthan~3}:name(Deals 2 damage) name(Deals 2 damage) damage:2 opponent text=Flying -- At the beginning of each opponent's upkeep, if that player has two or fewer cards in hand, Prickle Faeries deals 2 damage to them. color=black type=Creature @@ -64339,6 +64930,16 @@ mana={1}{R} type=Sorcery [/card] [card] +name=Primordial Plasm +auto=@each my combatbegins:name(Creature loses abilities) target(other *[creature]|battlefield) transforms((,newability[loseabilities],newability[2/2])) ueot +text=At the beginning of combat on your turn, another target creature gets +2/+2 and loses all abilities until end of turn. +color=green +type=Creature +subtype=Ooze +power=4 +toughness=4 +[/card] +[card] name=Primordial Wurm mana={4}{G}{G} type=Creature @@ -64788,6 +65389,17 @@ power=2 toughness=5 [/card] [card] +name=Protocol Knight +auto=if type(other *[knight]|mybattlefield)~morethan~0 then name(Stun creature) name(Stun creature) target(creature|opponentbattlefield) transforms((,newability[tap],newability[counter(0/0.1.Stun)],newability[this(counter{0/0.1.Stun}>=1) doesnotuntap],newability[@each my untap restriction{compare(hascntstun)~morethan~0}:name(Remove a stun counter) name(Remove a stun counter) counter(0/0.-1.Stun)])) forever +auto=if type(other *[knight]|mybattlefield)~equalto~0 then name(Tap creature) name(Tap creature) target(creature|opponentbattlefield) tap +text=When Protocol Knight enters the battlefield, tap target creature an opponent controls. Put a stun counter on that creature if you control another Knight. (If a permanent with a stun counter would become untapped, remove one from it instead.) +mana={3}{U} +type=Creature +subtype=Human Knight +power=3 +toughness=4 +[/card] +[card] name=Prototype Portal auto=may name(Exile an artifact) imprint target(artifact|myhand) auto=this(variable{hasevict}>0) transforms((,newability[{eval(evictmc)}{T}:name(Copy exiled card) name(Copy exiled card) clone target(artifact[evictname]|myexile)])) @@ -65315,6 +65927,14 @@ mana={2} type=Artifact [/card] [card] +name=Pyre of the World Tree +auto={D(land|myhand)}:name(Deals 2 damage) target(player,creature,planeswalker) damage:2 +auto=@discarded(land|myhand):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +text=Discard a land card: Pyre of the World Tree deals 2 damage to any target. -- Whenever you discard a land card, exile the top card of your library. You may play that card this turn. +color=red +type=Enchantment +[/card] +[card] name=Pyretic Prankster backside=Glistening Goremonger restriction=compare(isflipped)~equalto~0 @@ -67857,6 +68477,17 @@ power=2 toughness=3 [/card] [card] +name=Refraction Elemental +auto=@targeted(this|myBattlefield) from(*[instant;sorcery]|opponentzones):choice name(This spell costs 2 life more) name(This spell costs 2 life more) target(*[instant;sorcery]|opponentzones) transforms((,newability[pay[[{L:2}]] name(pay 2 life) donothing?fizzle])) oneshot +auto=@movedTo(*|mystack):name(Damage 2) damage:2 opponent +text=Ward-Pay 2 life. -- Whenever you cast a spell, Refraction Elemental deals 2 damage to each opponent. +color=red +type=Creature +subtype=Elemental +power=4 +toughness=4 +[/card] +[card] name=Refuse // Cooperate abilities=hasaftermath,asflash flashback={2}{U} name(Cooperate) @@ -68272,7 +68903,7 @@ type=Sorcery [/card] [card] name=Renari, Merchant of Marvels -abilities=backgoundpartner +abilities=backgroundpartner auto=lord(Dragon|mycastingzone) asflash auto=lord(artifact|mycastingzone) asflash text=You may cast Dragon spells and artifact spells as though they had flash. -- Choose a Background (You can have a Background as a second commander.) @@ -68294,6 +68925,15 @@ power=* toughness=3 [/card] [card] +name=Render Inert +target=*|battlefield +auto=removesinglecountertype(5) +auto=draw:1 controller +text=Remove up to five counters from target permanent. -- Draw a card. +mana={2}{B} +type=Sorcery +[/card] +[card] name=Rending Flame target=creature,planeswalker auto=damage:5 @@ -70450,6 +71090,22 @@ power=2 toughness=2 [/card] [card] +name=Rona, Herald of Invasion +backside=Rona, Tolarian Obliterator +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=@movedTo(*[legendary]|mystack) restriction{compare(isflipped)~equalto~0}:name(Untap rona) name(Untap rona) untap +auto={T}:name(Draw and discard) draw:1 && transforms((,newability[name(Discard a card) target(*|myhand) reject])) oneshot +auto={5}{B}:name(Pay B and transform Rona) flip(backside) forcetype(Legendary Creature Phyrexian Wizard) asSorcery +auto={5}{L:2}:name(Pay life and transform Rona) flip(backside) forcetype(Legendary Creature Phyrexian Wizard) asSorcery +text=Whenever you cast a legendary spell, untap Rona, Herald of Invasion. -- {T}: Draw a card, then discard a card. -- {5}{B/P}: Transform Rona. Activate only as a sorcery. ({B/P} can be paid with either {B} or 2 life.) +mana={1}{U} +type=Legendary Creature +subtype=Human Wizard +power=1 +toughness=3 +[/card] +[card] name=Rona, Sheoldred's Faithful auto=@movedTo(instant,sorcery|mystack):life:-1 opponent flashback={1}{U}{B}{B}{D(*|myhand)}{D(*|myhand)} @@ -70461,6 +71117,17 @@ power=3 toughness=4 [/card] [card] +name=Rona, Tolarian Obliterator +abilities=trample +auto=@damaged(this) from(*|opponentzones):name(Discard at random) name(Discard at random) ability$!name(Discard at random) name(Discard at random) all(*[zpos=genrandzpos=type:*:myhandplus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[land]|*) then transforms((,newability[choice name(Put land in play) moveto(mybattlefield)],newability[choice name(Don't put land in play) donothing])) oneshot],newability[if cantargetcard(*[-land]|*) then transforms((,newability[choice name(Cast for zero) activate castcard(normal))],newability[choice name(Don't cast) donothing])) oneshot])) oneshot )!!$ opponent +auto=@damaged(this) from(*|myzones):name(Discard at random) name(Discard at random) all(*[zpos=genrandzpos=type:*:myhandplus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[land]|*) then transforms((,newability[choice name(Put in play) moveto(mybattlefield)],newability[choice name(Don't put in play) donothing])) oneshot],newability[if cantargetcard(*[-land]|*) then transforms((,newability[choice name(Cast spell for zero) activate castcard(normal))],newability[choice name(Don't cast spell) donothing])) oneshot])) oneshot )! +text=Trample -- Whenever a source deals damage to Rona, Tolarian Obliterator, that source's controller exiles a card from their hand at random. If it's a land card, you may put it onto the battlefield under your control. Otherwise, you may cast it without paying its mana cost. +type=Legendary Creature +subtype=Phyrexian Wizard +power=5 +toughness=5 +[/card] +[card] name=Rooftop Saboteurs abilities=flying auto=@combatdamaged(player) from(this):name(Draw a card) draw:1 controller @@ -73261,7 +73928,7 @@ toughness=4 [card] name=Scion of Halaster aicode=activate transforms((,newability[target(*[zpos<=2]|mylibrary) moveto(myhand) and!( all(*[zpos<=2]|mylibrary) moveto(myreveal) and!( moveto(mygraveyard) )! )!])) oneshot -auto=this(variable{pdrewcount}=0) lord(*[iscommander]|mybattlefield) transforms((,newability[replacedraw reveal:2 optionone name(Put into graveyard) target(*|reveal) moveto(mygraveyard) optiononeend optiontwo name(Put back on top) all(*|reveal) moveto(mylibrary) optiontwoend afterrevealed draw:1 controller afterrevealedend revealend])) +auto=this(variable{pdrewcount}=0) lord(creature[iscommander]|mybattlefield) transforms((,newability[replacedraw reveal:2 optionone name(Put into graveyard) target(*|reveal) moveto(mygraveyard) optiononeend optiontwo name(Put back on top) all(*|reveal) moveto(mylibrary) optiontwoend afterrevealed draw:1 controller afterrevealedend revealend])) text=Commander creatures you own have "The first time you would draw a card each turn, instead look at the top two cards of your library. Put one of them into your graveyard and the other back on top of your library. Then draw a card." mana={1}{B} type=Legendary Enchantment @@ -73410,6 +74077,18 @@ power=2 toughness=3 [/card] [card] +name=Scorn-Blade Berserker +auto={1}{S}:name(Draw a card) draw:1 controller +auto=name(This creature) target(this) counter(1/1) +auto=name(Target other creature) target(other creature) transforms((,newability[counter(1/1)],newability[{1}{S}:name(Draw a card) draw:1 controller])) ueot +text=Backup 1 (When this creature enters the battlefield, put a +1/+1 counter on target creature. If that's another creature, it gains the following ability until end of turn.) -- {1}, Sacrifice this creature: Draw a card. +mana={B} +type=Creature +subtype=Human Berserker +power=0 +toughness=1 +[/card] +[card] name=Scour All Possibilities aicode=activate transforms((,newability[draw:1 controller])) oneshot auto=scry:2 scrycore delayed draw:1 controller scrycoreend scryend @@ -73471,6 +74150,16 @@ power=1 toughness=1 [/card] [card] +name=Scrappy Bruiser +auto=_ATTACKING_may name(Creature getrs 2/0 and trample) target(creature[attacking]|battlefield) transforms((,newability[2/0],newability[trample],newability[phaseaction[combatends once] moveTo(ownerhand)])) ueot +text=Whenever Scrappy Bruiser attacks, up to one target attacking creature gets +2/+0 and gains trample until end of turn. Return that creature to its owner's hand at end of combat. (Return it only if it's on the battlefield.) +mana={3}{R} +type=Creature +subtype=Raccoon Warrior +power=3 +toughness=4 +[/card] +[card] name=Scrapwork Cohort auto=create(soldier:artifact creature soldier:1/1) autograveyard={2}{W}:_UNEARTH_ @@ -73948,6 +74637,16 @@ power=1 toughness=1 [/card] [card] +name=Searing Barb +target=player,creature,planeswalker +auto=damage:2 +auto=if cantargetcard(*[creature]|*) then transforms((,newability[cantblock])) ueot +auto=name(Incubate 1) name(Incubate 1) activate castcard(noevent costx!:1:! named!:Incubator:!) +text=Searing Barb deals 2 damage to any target. If it's a creature, it can't block this turn. Incubate 1. (Create an Incubator token with a +1/+1 counter on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) +mana={2}{R} +type=Sorcery +[/card] +[card] name=Searing Barrage target=creature auto=damage:5 @@ -74149,6 +74848,18 @@ power=3 toughness=2 [/card] [card] +name=See Double +auto=if type(*|opponentgraveyard)~morethan~7 then if type(creature|battlefield)~morethan~0 then ability$!name(Copy creature) name(Copy creature) name(Copy creature) target(creature|battlefield) clone!$ controller +auto=if type(*|opponentgraveyard)~morethan~7 then if type(*[-instant;-sorcery]|stack)~morethan~0 then choice name(Copy permanent spell) name(Copy permanent spell) name(Copy permanent spell) ability$!name(Copy permanent spell) name(Copy permanent spell) name(Copy permanent spell) target(*[-instant;-sorcery]|stack) clone!$ controller +auto=if type(*|opponentgraveyard)~morethan~7 then if type(other *[instant;sorcery]|stack)~morethan~0 then choice name(Copy non-permanent spell) name(Copy non-permanent spell) name(Copy non-permanent spell) ability$!name(Copy non-permanent spell) name(Copy non-permanent spell) name(Copy non-permanent spell) target(other *[instant;sorcery]|stack) activate castcard(copied noevent)!$ controller +auto=if type(*|opponentgraveyard)~lessthan~8 then if type(*[-instant;-sorcery]|stack)~morethan~0 then choice name(Copy permanent spell) name(Copy permanent spell) name(Copy permanent spell) ability$!name(Copy permanent spell) name(Copy permanent spell) name(Copy permanent spell) target(*[-instant;-sorcery]|stack) clone!$ controller +auto=if type(*|opponentgraveyard)~lessthan~8 then if type(other *[instant;sorcery]|stack)~morethan~0 then choice name(Copy non-permanent spell) name(Copy non-permanent spell) name(Copy non-permanent spell) ability$!name(Copy non-permanent spell) name(Copy non-permanent spell) name(Copy non-permanent spell) target(other *[instant;sorcery]|stack) activate castcard(copied noevent)!$ controller +auto=if type(*|opponentgraveyard)~lessthan~8 then if type(creature|battlefield)~morethan~0 then choice name(Copy creature) name(Copy creature) name(Copy creature) ability$!name(Copy creature) name(Copy creature) name(Copy creature) target(creature|battlefield) clone!$ controller +text=This spell can't be copied. -- Choose one. If an opponent has eight or more cards in their graveyard, you may choose both. -- � Copy target spell. You may choose new targets for the copy. (A copy of a permanent spell becomes a token.) -- � Create a token that's a copy of target creature. +mana={2}{U}{U} +type=Instant +[/card] +[card] name=See Red target=creature auto=2/1 @@ -75125,7 +75836,7 @@ toughness=4 [/card] [card] name=Shadowheart, Dark Justiciar -abilities=backgoundpartner +abilities=backgroundpartner auto={1}{B}{T}{S(other creature|mybattlefield)}:name(Sacrifice another creature) draw:storedpower text={1}{B}, {T}, Sacrifice another creature: Draw X cards, where X is that creature's power. -- Choose a Background (You can have a Background as a second commander.) mana={3}{B} @@ -75315,7 +76026,7 @@ toughness=3 [/card] [card] name=Shameless Charlatan -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[{2}{U}:name(Copy a creature) target(creature|battlefield) copy])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[{2}{U}:name(Copy a creature) target(creature|battlefield) copy])) text=Commander creatures you own have "{2}{U}: This creature becomes a copy of another target creature." mana={1}{U} type=Legendary Enchantment @@ -75633,6 +76344,21 @@ mana={1}{R} type=Sorcery [/card] [card] +name=Sheoldred +abilities=menace +backside=The True Scriptures +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=ability$!name(Choose one) choice name(Sacrifice a creature) notatarget(creature[-token]|mybattlefield) sacrifice _ choice name(Sacrifice a planeswalker) notatarget(planeswalker[-token]|mybattlefield) sacrifice!$ opponent +auto=this(variable{type:*:opponentgraveyard}>7) {4}{B}:name(Exile and transform) name(Exile and transform) all(this) moveto(myexile) and!( flip(backside) forcetype(Enchantment Saga) )! asSorcery +text=Menace -- When Sheoldred enters the battlefield, each opponent sacrifices a nontoken creature or planeswalker. -- {4}{B}: Exile Sheoldred, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery and only if an opponent has eight or more cards in their graveyard. +mana={3}{B}{B} +type=Legendary Creature +subtype=Phyrexian Praetor +power=4 +toughness=5 +[/card] +[card] name=Sheoldred's Edict auto=choice name(opponent sacrifices a nontoken creature) ability$!notAtarget(creature[-token]|myBattlefield) sacrifice!$ opponent auto=choice name(opponent sacrifices a creature token) ability$!notAtarget(creature[token]|myBattlefield) sacrifice!$ opponent @@ -82833,7 +83559,7 @@ type=Enchantment [/card] [card] name=Street Urchin -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[{1}{S(other *[creature;artifact]|mybattlefield)}:name(Deal 1 damage) target(creature^player^planeswalker) damage:1])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[{1}{S(other *[creature;artifact]|mybattlefield)}:name(Deal 1 damage) target(creature^player^planeswalker) damage:1])) text=Commander creatures you own have "{1}, Sacrifice another creature or an artifact: This creature deals 1 damage to any target." mana={1}{R} type=Legendary Enchantment @@ -83451,8 +84177,8 @@ toughness=5 name=Sunder the Gateway auto=if type(artifact[-token]|opponentbattlefield)~morethan~0 then choice name(Destroy artifact and incubate 2) name(Destroy artifact and incubate 2) target(artifact[-token]|opponentbattlefield) destroy and!( activate castcard(noevent costx!:2:! named!:Incubator:!) )! auto=if type(enchantment|opponentbattlefield)~morethan~0 then choice name(Destroy enchantment and incubate 2) name(Destroy enchantment and incubate 2) target(enchantment|opponentbattlefield) destroy and!( activate castcard(noevent costx!:2:! named!:Incubator:!) )! -auto=choice name(Incubate 2 and transform) name(Incubate 2 and transform) emblem transforms((,newability[name(Incubate 2) name(Incubate 2) activate castcard(noevent costx!:2:! named!:Incubator:!)],newability[newability[@movedto(incubator|mybattlefield) turnlimited:name(Choose incubator) name(Choose incubator) target(incubator|mybattlefield) flip(backside)])) ueot -text=Choose one — -- • Destroy target nontoken artifact or enchantment an opponent controls. Incubate 2. (Create an Incubator token with two +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) -- • Incubate 2, then transform an Incubator token you control. +auto=choice name(Incubate 2 and transform) name(Incubate 2 and transform) emblem transforms((,newability[name(Incubate 2) name(Incubate 2) activate castcard(noevent costx!:2:! named!:Incubator:!)],newability[@movedto(incubator|mybattlefield) turnlimited:name(Choose incubator) name(Choose incubator) target(incubator|mybattlefield) flip(backside)])) ueot +text=Choose one -- Destroy target nontoken artifact or enchantment an opponent controls. Incubate 2. (Create an Incubator token with two +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) -- � Incubate 2, then transform an Incubator token you control. mana={1}{W} type=Sorcery [/card] @@ -84262,7 +84988,7 @@ toughness=2 [/card] [card] name=Sword Coast Sailor -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[unblockable])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[unblockable])) text=Commander creatures you own have "Whenever this creature attacks a player, if no opponent has more life than that player, this creature can't be blocked this turn." mana={1}{U} type=Legendary Enchantment @@ -84832,26 +85558,26 @@ toughness=4 name=Tainted Adversary abilities=deathtouch auto=choice name(Don't add any counter) donothing -auto=choice name(Add 1 counter) thisforeach(variable{1}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 2 counters) thisforeach(variable{2}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 3 counters) thisforeach(variable{3}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 4 counters) thisforeach(variable{4}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 5 counters) thisforeach(variable{5}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 6 counters) thisforeach(variable{6}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 7 counters) thisforeach(variable{7}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 8 counters) thisforeach(variable{8}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 9 counters) thisforeach(variable{9}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 10 counters) thisforeach(variable{10}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 11 counters) thisforeach(variable{11}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 12 counters) thisforeach(variable{12}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 13 counters) thisforeach(variable{13}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 14 counters) thisforeach(variable{14}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 15 counters) thisforeach(variable{15}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 16 counters) thisforeach(variable{16}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 17 counters) thisforeach(variable{17}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 18 counters) thisforeach(variable{18}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 19 counters) thisforeach(variable{19}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller -auto=choice name(Add 20 counters) thisforeach(variable{20}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)])) oneshot!$ controller +auto=choice name(Add 1 counter) thisforeach(variable{1}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 2 counters) thisforeach(variable{2}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 3 counters) thisforeach(variable{3}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 4 counters) thisforeach(variable{4}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 5 counters) thisforeach(variable{5}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 6 counters) thisforeach(variable{6}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 7 counters) thisforeach(variable{7}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 8 counters) thisforeach(variable{8}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 9 counters) thisforeach(variable{9}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 10 counters) thisforeach(variable{10}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 11 counters) thisforeach(variable{11}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 12 counters) thisforeach(variable{12}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 13 counters) thisforeach(variable{13}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 14 counters) thisforeach(variable{14}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 15 counters) thisforeach(variable{15}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 16 counters) thisforeach(variable{16}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 17 counters) thisforeach(variable{17}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 18 counters) thisforeach(variable{18}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 19 counters) thisforeach(variable{19}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller +auto=choice name(Add 20 counters) thisforeach(variable{20}) ability$!name(Pay to add counter) pay({2}{B}) name(Pay to add counter) all(mysource) name(Pay to add counter) transforms((,newability[counter(1/1)],newability[name(Create 1 zombie) token(Zombie Dec)*2])) oneshot!$ controller text=Deathtouch -- When Tainted Adversary enters the battlefield, you may pay {2}{B} any number of times. When you pay this cost one or more times, put that many +1/+1 counters on Tainted Adversary, then create twice that many black 2/2 Zombie creature tokens with decayed. (A creature with decayed can't block. When it attacks, sacrifice it at end of combat.) type=Creature subtype=Zombie @@ -85529,7 +86255,7 @@ toughness=1 [/card] [card] name=Tavern Brawler -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[@each my upkeep:name(Exile top card) name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[name(Commander gets +X/0) target(*[iscommander]|mybattlefield) manacost/0 ueot])) ueot )!])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[@each my upkeep:name(Exile top card) name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[name(Commander gets +X/0) target(creature[iscommander]|mybattlefield) manacost/0 ueot])) ueot )!])) text=Commander creatures you own have "At the beginning of your upkeep, exile the top card of your library. This creature gets +X/+0 until end of turn, where X is that card's mana value. You may play that card this turn." mana={2}{R} type=Legendary Enchantment @@ -85920,6 +86646,15 @@ text=As Temple of the Dragon Queen enters the battlefield, you may reveal a Drag type=Land [/card] [card] +name=Temporal Cleansing +other={convoke} name(Convoke) +target=*[-land] +auto=transforms((,newability[choice name(Put on bottom) bottomoflibrary],newability[choice name(Put second from the top) placefromthetop(2)])) oneshot +text=Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.) -- The owner of target nonland permanent puts it into their library second from the top or on the bottom. +mana={3}{U} +type=Sorcery +[/card] +[card] name=Temporal Extortion auto=ability$!name(Choose one) choice name(Pay half life and counter) life:-halfdownlifetotal controller _ choice name(Extra turn) turns:+1 opponent!$ opponent text=When you cast Temporal Extortion, any player may pay half his or her life, rounded up. If a player does, counter Temporal Extortion. -- Take an extra turn after this one. @@ -86561,7 +87296,7 @@ auto=name(Transform all incubators) all(incubator|mybattlefield) flip(backside) auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) name(Creatures gain 1/1) all(creature|mybattlefield) transforms((,newability[1/1],newability[double strike])) ueot auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) name(Destroy all prermanents) all(other *[-land;-phyrexian;-artifact]) destroy auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) name(Exile and return) moveto(myexile) and!( moveto(mybattlefield) )! -text=(As this Saga enters and after your draw step, add a lore counter.) -- I — Incubate 2 five times, then transform all Incubator tokens you control. -- II — Creatures you control get +1/+1 and gain double strike until end of turn. -- III — Destroy all other permanents except for artifacts, lands, and Phyrexians. Exile The Argent Etchings, then return it to the battlefield (front face up). +text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Incubate 2 five times, then transform all Incubator tokens you control. -- II - Creatures you control get +1/+1 and gain double strike until end of turn. -- III - Destroy all other permanents except for artifacts, lands, and Phyrexians. Exile The Argent Etchings, then return it to the battlefield (front face up). type=Enchantment subtype=Saga [/card] @@ -86905,6 +87640,19 @@ mana={7}{G}{G} type=Legendary Artifact [/card] [card] +name=The Great Synthesis +abilities=nomaxhand +auto=counter(0/0,1,Lore) +auto=@each my firstmain:counter(0/0,1,Lore) +auto=draw:type:*:myhand controller +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) name(Return creatures) all(creature[-phyrexian]|battlefield) moveto(ownerhand) +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) name(Cast spells for zero) target(*[-land]|myhand) activate castcard(normal) +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) name(Exile and return) moveto(myexile) and!( moveto(mybattlefield) )! +text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Draw cards equal to the number of cards in your hand. You have no maximum hand size for as long as you control The Great Synthesis. -- II - Return all non-Phyrexian creatures to their owners' hands. -- III - You may cast any number of spells from your hand without paying their mana costs. Exile The Great Synthesis, then return it to the battlefield (front face up). +type=Enchantment +subtype=Saga +[/card] +[card] name=The Haunt of Hightower abilities=flying, lifelink auto=_ATTACKING_ability$!name(discard) target(*|myhand) reject!$ opponent @@ -87206,6 +87954,20 @@ type=Enchantment subtype=Saga [/card] [card] +name=The True Scriptures +auto=counter(0/0,1,Lore) +auto=@each my firstmain:counter(0/0,1,Lore) +auto=may name(Destroy creature or planeswalker) target(*[creature;planeswalker]|opponentbattlefield) destroy +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) name(Opponent mills 3 cards) deplete:3 opponent +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) name(Opponent discards 3 cards) ability$!name(Discards 3 cards) name(Discards 3 cards) notatarget(<3>*|myhand) reject!$ opponent +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) name(Return all creatures) all(creature|graveyard) moveto(mybattlefield) +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) name(Exile and return) moveto(myexile) and!( moveto(mybattlefield) )! +text=(As this Saga enters and after your draw step, add a lore counter.) -- I - For each opponent, destroy up to one target creature or planeswalker that player controls. -- II - Each opponent discards three cards, then mills three cards. -- III - Put all creature cards from all graveyards onto the battlefield under your control. Exile The True Scriptures, then return it to the battlefield (front face up). +color=black +type=Enchantment +subtype=Saga +[/card] +[card] name=The Underworld Cookbook auto={T}{D(*|myHand)}:name(Create food) token(Food) auto={4}{T}{S}:name(Return creature) target(creature|mygraveyard) moveto(myHand) @@ -89799,6 +90561,15 @@ type=Enchantment subtype=Aura [/card] [card] +name=Traumatic Revelation +auto=if type(*|opponenthand)~morethan~0 then if type(*[creature;battle]|opponenthand)~morethan~0 then name(Reveal opponent hand) name(Reveal opponent hand) name(Reveal opponent hand) target(*[creature;battle]|opponenthand) moveto(myreveal) and!( transforms((,newability[choice name(Opponent discards) moveto(opponenthand) and!( moveto(opponentgraveyard) )!],newability[choice name(Opponent doesn't discards) moveto(opponenthand) and!( activate castcard(noevent costx!:3:! named!:Incubator:!) )!])) oneshot )! +auto=if type(*|opponenthand)~morethan~0 then if type(*[creature;battle]|opponenthand)~equalto~0 then name(Reveal opponent hand) name(Reveal opponent hand) name(Reveal opponent hand) target(*|opponenthand) moveto(myreveal) and!( moveto(opponenthand) and!( activate castcard(noevent costx!:3:! named!:Incubator:!) )! )! +auto=if type(*|opponenthand)~equalto~0 then name(Incubate 3) name(Incubate 3) activate castcard(noevent costx!:3:! named!:Incubator:!) +text=Target opponent reveals their hand. You may choose a creature or battle card from it. If you do, that player discards that card. If you don't, incubate 3. (Create an Incubator token with three +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) +mana={1}{B} +type=Sorcery +[/card] +[card] name=Traveling Minister auto={T}:name(Creature gets 1/0) target(creature) 1/0 ueot && life:1 controller assorcery text={T}: Target creature gets +1/+0 until end of turn. You gain 1 life. Activate only as a sorcery. @@ -93096,7 +93867,7 @@ toughness=3 [card] name=Venerated Loxodon other={convoke} name(Convoke) -auto=lord(creature[tapped;-attacking]|myBattlefield) counter(1/1) +auto=if paid(alternative) then name(Put 1/1 counter) name(Put 1/1 counter) all(creature[tapped;-attacking]|myBattlefield) counter(1/1) text=Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for 1 or one mana of that creature's color.) -- When Venerated Loxodon enters the battlefield, put a +1/+1 counter on each creature that convoked it. mana={4}{W} type=Creature @@ -93518,7 +94289,7 @@ toughness=1 [/card] [card] name=Veteran Soldier -auto=lord(*[iscommander]|mybattlefield) transforms((,newability[@combat(attacking) source(this):name(Create attacking Soldier) token(Soldier,Creature Soldier,1/1,white,battleready)])) +auto=lord(creature[iscommander]|mybattlefield) transforms((,newability[@combat(attacking) source(this):name(Create attacking Soldier) token(Soldier,Creature Soldier,1/1,white,battleready)])) text=Commander creatures you own have "Whenever this creature attacks a player, if no opponent has more life than that player, for each opponent, create a 1/1 white Soldier creature token that's tapped and attacking that opponent." mana={1}{W} type=Legendary Enchantment @@ -93744,7 +94515,7 @@ type=Sorcery [/card] [card] name=Viconia, Drow Apostate -abilities=backgoundpartner +abilities=backgroundpartner auto=@each my upkeep restriction{type(creature|mygraveyard)~morethan~3}:moverandom(creature) from(mygraveyard) to(myhand) text=At the beginning of your upkeep, if there are four or more creature cards in your graveyard, return a creature card at random from your graveyard to your hand. -- Choose a Background (You can have a Background as a second commander.) mana={2}{B} @@ -94668,6 +95439,18 @@ power=1 toughness=1 [/card] [card] +name=Voldaren Thrillseeker +auto={1}{S}:name(Deal damage) target(player,creature,planeswalker) damage:p +auto=name(This creature) target(this) counter(1/1,2) +auto=name(Target other creature) target(other creature) transforms((,newability[counter(1/1,2)],newability[{1}{S}:name(Deal damage) target(player^creature^planeswalker) damage:p])) ueot +text=Backup 2 (When this creature enters the battlefield, put two +1/+1 counters on target creature. If that's another creature, it gains the following ability until end of turn.) -- {1}, Sacrifice this creature: It deals damage equal to its power to any target. +mana={2}{R} +type=Creature +subtype=Vampire Warrior +power=1 +toughness=1 +[/card] +[card] name=Volley Veteran auto=damage:type:goblin:mybattlefield target(creature|opponentBattlefield) text=When Volley Veteran enters the battlefield, it deals damage to target creature an opponent controls equal to the number of Goblins you control. @@ -96414,6 +97197,14 @@ power=4 toughness=2 [/card] [card] +name=Wicked Slumber +other={convoke} name(Convoke) +auto=may name(Tap 2 creatures) target(creature|battlefield) tap && ability$!name(Stun creature) name(Stun creature) target(creature|battlefield) counter(0/0.1.Stun)!$ controller +text=Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.) -- Tap up to two target creatures. Put a stun counter on either of them. Then put a stun counter on either of them. (If a permanent with a stun counter would become untapped, remove one from it instead.) +mana={3}{U} +type=Instant +[/card] +[card] name=Wicked Wolf auto=transforms((,newability[target(creature|opponentbattlefield) dynamicability])) ueot auto={S(food|myBattlefield)}:counter(1/1) && tap(noevent) && indestructible ueot @@ -96722,7 +97513,7 @@ toughness=3 [/card] [card] name=Wilson, Refined Grizzly -abilities=reach,trample,vigilance,nofizzle,backgoundpartner +abilities=reach,trample,vigilance,nofizzle,backgroundpartner auto=_WARD_(2) text=This spell can't be countered. -- Vigilance, reach, trample -- Ward {2} (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {2}.) -- Choose a Background (You can have a Background as a second commander.) mana={1}{G} @@ -98419,7 +99210,7 @@ toughness=3 [/card] [card] name=Young Red Dragon // Bathe in Gold -abilities=flying,cantblock,adventure,asflsh +abilities=flying,cantblock,adventure,asflash restriction=can play creature other={1}{R} name(Adventure) auto=if paid(alternative) then name(Create Treasure) name(Create Treasure) token(Treasure Sur) @@ -98766,6 +99557,18 @@ power=1 toughness=1 [/card] [card] +name=Zephyr Singer +abilities=flying,vigilance +other={convoke} name(Convoke) +auto=if paid(alternative) then name(Put flying counter) name(Put flying counter) all(creature[tapped;-attacking]|myBattlefield) transforms((,newability[counter(0/0.1.Flying)],newability[this(counter{0/0.1.Flying}>=1) flying])) forever +text=Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.) -- Flying, vigilance -- When Zephyr Singer enters the battlefield, put a flying counter on each creature that convoked it. +mana={2}{U}{U} +type=Creature +subtype=Siren Pirate +power=3 +toughness=4 +[/card] +[card] name=Zephyr Winder abilities=flying auto=@combatdamaged(player) from(this):may untap target(creature) @@ -98899,6 +99702,17 @@ power=6 toughness=6 [/card] [card] +name=Zilortha, Apex of Ikoria +abilities=reach +auto=@combat(blocked) source(creature[-human]|mybattlefield):may name(assign combat damage to defending player) all(trigger[to]) transforms((,newability[name(Deals damage) damage:power target(opponent)],newability[fog from(this)])) oneshot +text=Reach -- For each non-Human creature you control, you may have that creature assign its combat damage as though it weren't blocked. +color=green +type=Legendary Creature +subtype=Dinosaur +power=8 +toughness=8 +[/card] +[card] name=Zimone, Quandrix Prodigy auto={1}{T}:name(Put land in play) target(land|myhand) moveto(mybattlefield) and!( tap(noevent) )! auto=this(variable{type:land:mybattlefield}<8) {4}{T}:name(Draw 1 card) draw:1 controller diff --git a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt index 5e8dc727a..e2f51266f 100644 --- a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt +++ b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt @@ -534,6 +534,57 @@ type=Legendary Planeswalker subtype=Chandra [/card] [card] +name=Chandra, Hope's Beacon +auto=counter(0/0,5,loyalty) +auto=@movedTo(*[instant;sorcery]|mystack) turnlimited:name(Copy spell) name(Copy spell) all(trigger[to]) transforms((,newability[name(Copy spell) activate castcard(copied noevent)])) oneshot +auto={C(0/0,+2,Loyalty)}:name(+2: Add 2 mana) thisforeach(variable{2}) ability$!name(Choose one) choice name(Add white) add{W} _ choice name(Add blue) add{U} _ choice name(Add red) add{R} _ choice name(Add green) add{G} _ choice name(Add black) add{B}!$ controller +auto={C(0/0,+1,Loyalty)}:name(+1: Exile top 5 cards) all(*[zpos<=5]|mylibrary) moveto(myexile) and!( if cantargetcard(*[instant;sorcery]|*) then transforms((,newability[canplayfromexile])) ueot )! +auto={C(0/0,-1,Loyalty)}:name(-1: Damage one target) ability$!name(Damage target) name(Damage target(player,creature,planeswalker) damage:1!$ controller +auto={C(0/0,-1,Loyalty)}:name(-1: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:1!$ controller +auto={C(0/0,-2,Loyalty)}:name(-2: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:2!$ controller +auto={C(0/0,-2,Loyalty)}:name(-2: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:2!$ controller +auto={C(0/0,-3,Loyalty)}:name(-3: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:3!$ controller +auto={C(0/0,-3,Loyalty)}:name(-3: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:3!$ controller +auto={C(0/0,-4,Loyalty)}:name(-4: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:4!$ controller +auto={C(0/0,-4,Loyalty)}:name(-4: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:4!$ controller +auto={C(0/0,-5,Loyalty)}:name(-5: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:5!$ controller +auto={C(0/0,-5,Loyalty)}:name(-5: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:5!$ controller +auto={C(0/0,-6,Loyalty)}:name(-6: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:6!$ controller +auto={C(0/0,-6,Loyalty)}:name(-6: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:6!$ controller +auto={C(0/0,-7,Loyalty)}:name(-7: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:7!$ controller +auto={C(0/0,-7,Loyalty)}:name(-7: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:7!$ controller +auto={C(0/0,-8,Loyalty)}:name(-8: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:8!$ controller +auto={C(0/0,-8,Loyalty)}:name(-8: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:8!$ controller +auto={C(0/0,-9,Loyalty)}:name(-9: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:9!$ controller +auto={C(0/0,-9,Loyalty)}:name(-9: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:9!$ controller +auto={C(0/0,-10,Loyalty)}:name(-10: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:10!$ controller +auto={C(0/0,-10,Loyalty)}:name(-10: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:10!$ controller +auto={C(0/0,-11,Loyalty)}:name(-11: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:11!$ controller +auto={C(0/0,-11,Loyalty)}:name(-11: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:11!$ controller +auto={C(0/0,-12,Loyalty)}:name(-12: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:12!$ controller +auto={C(0/0,-12,Loyalty)}:name(-12: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:12!$ controller +auto={C(0/0,-13,Loyalty)}:name(-13: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:13!$ controller +auto={C(0/0,-13,Loyalty)}:name(-13: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:13!$ controller +auto={C(0/0,-14,Loyalty)}:name(-14: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:14!$ controller +auto={C(0/0,-14,Loyalty)}:name(-14: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:14!$ controller +auto={C(0/0,-15,Loyalty)}:name(-15: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:15!$ controller +auto={C(0/0,-15,Loyalty)}:name(-15: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:15!$ controller +auto={C(0/0,-16,Loyalty)}:name(-16: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:16!$ controller +auto={C(0/0,-16,Loyalty)}:name(-16: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:16!$ controller +auto={C(0/0,-17,Loyalty)}:name(-17: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:17!$ controller +auto={C(0/0,-17,Loyalty)}:name(-17: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:17!$ controller +auto={C(0/0,-18,Loyalty)}:name(-18: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:18!$ controller +auto={C(0/0,-18,Loyalty)}:name(-18: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:18!$ controller +auto={C(0/0,-19,Loyalty)}:name(-19: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:19!$ controller +auto={C(0/0,-19,Loyalty)}:name(-29: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:19!$ controller +auto={C(0/0,-20,Loyalty)}:name(-20: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:20!$ controller +auto={C(0/0,-20,Loyalty)}:name(-20: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:20!$ controller +text=Whenever you cast an instant or sorcery spell, copy it. You may choose new targets for the copy. This ability triggers only once each turn. -- [+2]: Add two mana in any combination of colors. -- [+1]: Exile the top five cards of your library. Until the end of your next turn, you may cast an instant or sorcery spell from among those exiled cards. -- [−X]: Chandra, Hope's Beacon deals X damage to each of up to two targets. +mana={4}{R}{R} +type=Legendary Planeswalker +subtype=Chandra +[/card] +[card] name=Chandra Nalaar auto=counter(0/0,6,loyalty) auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage to player or planeswalker) damage:1 target(player,planeswalker) diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index c6467bbae..efa36b2a1 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -1545,7 +1545,7 @@ AADamager::AADamager(GameObserver* observer, int _id, MTGCardInstance * _source, if (_target) { WParsedInt damage(d, NULL, (MTGCardInstance *)source); - if(_target == game->opponent() && (game->opponent()->inPlay()->hasType("planeswalker") || game->opponent()->inPlay()->hasType("battle")) && !redirected) + if(_target == game->opponent() && game->opponent()->inPlay()->hasType("planeswalker") && !redirected) { vectorselection; MTGCardInstance * check = NULL; @@ -1557,7 +1557,7 @@ AADamager::AADamager(GameObserver* observer, int _id, MTGCardInstance * _source, for(int i = 0; i < checkWalkers;++i) { check = ((Player*)_target)->game->battlefield->cards[i]; - if(check->hasType(Subtypes::TYPE_PLANESWALKER) || check->hasType(Subtypes::TYPE_BATTLE)) + if(check->hasType(Subtypes::TYPE_PLANESWALKER)) { this->redirected = true; MTGAbility * setWalker = this->clone(); diff --git a/projects/mtg/src/CardDescriptor.cpp b/projects/mtg/src/CardDescriptor.cpp index 8372eeab5..df8712e20 100644 --- a/projects/mtg/src/CardDescriptor.cpp +++ b/projects/mtg/src/CardDescriptor.cpp @@ -181,8 +181,18 @@ MTGCardInstance * CardDescriptor::match_or(MTGCardInstance * card) return NULL; if (powerComparisonMode && !valueInRange(powerComparisonMode, card->getPower(), power)) return NULL; - if (toughnessComparisonMode && !valueInRange(toughnessComparisonMode, card->getToughness(), toughness)) - return NULL; + if (toughnessComparisonMode){ // Toughness has different meaning for creatures, planeswalkers and battles + if(card->isCreature() && !valueInRange(toughnessComparisonMode, card->getToughness(), toughness)) + return NULL; + else if(card->counters && (card->hasType(Subtypes::TYPE_PLANESWALKER) || card->hasType(Subtypes::TYPE_BATTLE))){ + for(size_t i = 0; i < card->counters->counters.size(); ++i){ + if((card->counters->counters[i]->name == "loyalty" && card->hasType(Subtypes::TYPE_PLANESWALKER)) || (card->counters->counters[i]->name == "defense" && card->hasType(Subtypes::TYPE_BATTLE))){ + if(!valueInRange(toughnessComparisonMode, card->counters->counters[i]->nb, toughness)) + return NULL; + } + } + } + } if (manacostComparisonMode && !valueInRange(manacostComparisonMode, card->myconvertedcost, convertedManacost)) return NULL; if (zposComparisonMode && !valueInRange(zposComparisonMode, card->zpos, zposition)) @@ -229,8 +239,18 @@ MTGCardInstance * CardDescriptor::match_and(MTGCardInstance * card) match = NULL; if (powerComparisonMode && !valueInRange(powerComparisonMode, card->getPower(), power)) match = NULL; - if (toughnessComparisonMode && !valueInRange(toughnessComparisonMode, card->getToughness(), toughness)) - match = NULL; + if (toughnessComparisonMode){ // Toughness has different meaning for creatures, planeswalkers and battles + if(card->isCreature() && !valueInRange(toughnessComparisonMode, card->getToughness(), toughness)) + return NULL; + else if(card->counters && (card->hasType(Subtypes::TYPE_PLANESWALKER) || card->hasType(Subtypes::TYPE_BATTLE))){ + for(size_t i = 0; i < card->counters->counters.size(); ++i){ + if((card->counters->counters[i]->name == "loyalty" && card->hasType(Subtypes::TYPE_PLANESWALKER)) || (card->counters->counters[i]->name == "defense" && card->hasType(Subtypes::TYPE_BATTLE))){ + if(!valueInRange(toughnessComparisonMode, card->counters->counters[i]->nb, toughness)) + return NULL; + } + } + } + } if (manacostComparisonMode && !valueInRange(manacostComparisonMode, card->myconvertedcost, convertedManacost)) match = NULL; if (zposComparisonMode && !valueInRange(zposComparisonMode, card->zpos, zposition)) diff --git a/projects/mtg/src/TargetChooser.cpp b/projects/mtg/src/TargetChooser.cpp index c4f9b7583..5e92f2a8d 100644 --- a/projects/mtg/src/TargetChooser.cpp +++ b/projects/mtg/src/TargetChooser.cpp @@ -283,6 +283,26 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta zones[nbzones++] = MTGGameZone::MY_HAND; zones[nbzones++] = MTGGameZone::MY_LIBRARY; } + else if (zoneName.compare("mygravelibrary") == 0) + { + zones[nbzones++] = MTGGameZone::MY_GRAVEYARD; + zones[nbzones++] = MTGGameZone::MY_LIBRARY; + } + else if (zoneName.compare("opponentgravelibrary") == 0) + { + zones[nbzones++] = MTGGameZone::OPPONENT_GRAVEYARD; + zones[nbzones++] = MTGGameZone::OPPONENT_LIBRARY; + } + else if (zoneName.compare("mygraveexile") == 0) + { + zones[nbzones++] = MTGGameZone::MY_EXILE; + zones[nbzones++] = MTGGameZone::MY_GRAVEYARD; + } + else if (zoneName.compare("opponentgraveexile") == 0) + { + zones[nbzones++] = MTGGameZone::OPPONENT_EXILE; + zones[nbzones++] = MTGGameZone::OPPONENT_GRAVEYARD; + } else if (zoneName.compare("opponentcastingzone") == 0) { zones[nbzones++] = MTGGameZone::OPPONENT_GRAVEYARD;