Improved castcard "restricted" option for land cards, fixed fresh attribute reset on library cards, improved "can play" restriction, fixed BRO set dat file, updated card url file for BRO set, added/fixed some primitives from BRO set.

This commit is contained in:
Vittorio Alfieri
2023-05-30 23:27:18 +02:00
parent 06b1a47a56
commit 21687bc3ee
6 changed files with 406 additions and 135 deletions

View File

@@ -62805,7 +62805,7 @@ BRO;583745;https://cards.scryfall.io/large/front/f/7/f72de800-b28e-42c4-a3ca-5ec
BRO;583746;https://cards.scryfall.io/large/front/b/3/b30457c3-57df-4720-8b45-962f16316d17.jpg
BRO;583747;https://cards.scryfall.io/large/front/b/b/bb142d99-b210-47c8-897c-be62f90d2192.jpg
BRO;588284;https://cards.scryfall.io/large/front/e/2/e2b826be-4256-4fd6-ad4d-6c80933ee940.jpg
BRO;588285;https://cards.scryfall.io/large/back/0/2/0220c1e9-07bc-44f0-b39e-ca345ec4ea28.jpg
BRO;588285;https://cards.scryfall.io/large/front/0/2/0220c1e9-07bc-44f0-b39e-ca345ec4ea28.jpg
BRO;583748;https://cards.scryfall.io/large/front/4/7/4742800a-4872-4c2d-b884-01e0ba16950c.jpg
BRO;583749;https://cards.scryfall.io/large/front/3/8/38fc1715-4ddb-4404-83c6-0b8a61922578.jpg
BRO;583750;https://cards.scryfall.io/large/front/7/1/71a49b18-a339-401c-ab77-fcd04772cf69.jpg
Can't render this file because it is too large.

View File

@@ -1037,7 +1037,7 @@ rarity=R
[card]
primitive=Mishra, Lost to Phyrexia
id=588285
rarity=T
rarity=M
[/card]
[card]
primitive=Scrapwork Mutt

View File

@@ -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 29-05-2023
#I sorted this programmatically - Thanks to Vitty85 30-05-2023
[card]
name=+2 Mace
auto={3}:equip
@@ -1100,6 +1100,17 @@ power=2
toughness=5
[/card]
[card]
name=Airlift Chaplain
abilities=flying
auto=name(Mill 3 cards) all(*[zpos<=2]|mylibrary) moveto(mygraveyard) and!( transforms((tobereturn,newability[all(*[zpos=3]|mylibrary) moveto(mygraveyard) and!( transforms((tobereturn,newability[if type(creature[tobereturn&manacost<=3]|mygraveyard)~morethan~0 then choice name(Return a creature) name(Return a creature) target(creature[tobereturn&manacost<=3]|mygraveyard) moveto(myhand)],newability[if type(plains[tobereturn]|mygraveyard)~morethan~0 then choice name(Return a plains) name(Return a plains) target(plains[tobereturn]|mygraveyard) moveto(myhand)],newability[choice name(Put 1/1 counter) target(Airlift Chaplain[fresh]|mybattlefield) counter(1/1)])) ueot )!])) ueot )!
text=Flying -- When Airlift Chaplain enters the battlefield, mill three cards. You may put a Plains card or a creature card with mana value 3 or less from among the cards milled this way into your hand. If you don't, put a +1/+1 counter on Airlift Chaplain. (To mill a card, put the top card of your library into your graveyard.)
mana={2}{W}
type=Creature
subtype=Human Cleric
power=1
toughness=1
[/card]
[card]
name=Ajani's Aid
auto=moveto(myhand) target(Ajani^ Valiant Protector|mylibrary)
auto=moveto(myhand) target(Ajani^ Valiant Protector|mygraveyard)
@@ -8178,7 +8189,7 @@ toughness=6
[/card]
[card]
name=Blanchwood Prowler
auto=name(Mill 3 cards) all(*[zpos<=2]|mylibrary) moveto(mygraveyard) and!( transforms((tobereturn,newability[all(*[zpos=3]|mylibrary) moveto(mygraveyard) and!( transforms((tobereturn,newability[choice name(Return a permanent) target(tobereturn[land]|mygraveyard) moveto(myhand)],newability[choice name(Put 1/1 counter) target(Blanchwood Prowler[fresh]|mybattlefield) counter(1/1)])) ueot )!])) ueot )!
auto=name(Mill 3 cards) all(*[zpos<=2]|mylibrary) moveto(mygraveyard) and!( transforms((tobereturn,newability[all(*[zpos=3]|mylibrary) moveto(mygraveyard) and!( transforms((tobereturn,newability[if type(tobereturn[land]|mygraveyard)~morethan~0 then choice name(Return a land) name(Return a land) target(tobereturn[land]|mygraveyard) moveto(myhand)],newability[choice name(Put 1/1 counter) target(Blanchwood Prowler[fresh]|mybattlefield) counter(1/1)])) ueot )!])) ueot )!
text=When Blanchwood Prowler enters the battlefield, mill three cards. You may put a land card from among the cards milled this way into your hand. If you don't, put a +1/+1 counter on Blanchwood Prowler. (To mill a card, put the top card of your library into your graveyard.)
mana={1}{G}
type=Creature
@@ -29166,6 +29177,16 @@ power=2
toughness=1
[/card]
[card]
name=Fallaji Archaeologist
auto=name(Mill 3 cards) all(*[zpos<=2]|mylibrary) moveto(mygraveyard) and!( transforms((tobereturn,newability[all(*[zpos=3]|mylibrary) moveto(mygraveyard) and!( transforms((tobereturn,newability[if type(tobereturn[-land&-creature]|mygraveyard)~morethan~0 then choice name(Return a card) name(Return a card) target(tobereturn[-land&-creature]|mygraveyard) moveto(myhand)],newability[choice name(Put 1/1 counter) target(Fallaji Archaeologist[fresh]|mybattlefield) counter(1/1)])) ueot )!])) ueot )!
text=When Fallaji Archaeologist enters the battlefield, mill three cards. You may put a noncreature, nonland card from among the cards milled this way into your hand. If you don't, put a +1/+1 counter on Fallaji Archaeologist. (To mill a card, put the top card of your library into your graveyard.)
mana={1}{U}
type=Creature
subtype=Human Scout
power=0
toughness=3
[/card]
[card]
name=Fall from Favor
target=creature
auto=tap
@@ -35048,6 +35069,26 @@ mana={2}{B}
type=Sorcery
[/card]
[card]
name=Gix, Yawgmoth Praetor
auto=@combatdamagefoeof(player) from(creature|mybattlefield):may name(Pay life and draw) pay({L:1}) draw:1 controller
auto={4}{B}{B}{B}{D(*|myhand)}:name(Discard 1 card) target(*[zpos<=1]|opponentlibrary) moveto(myexile) and!( transforms((,newability[if cantargetcard(*[land]|*) then if compare(controllerturn)~morethan~0 then if can play land then choice name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) activate castcard(restricted putinplay) and!( if cantargetcard(*[land]|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[land]|*) then choice name(Don't play exiled land) name(Don't play exiled land) moveto(ownerexile)],newability[if cantargetcard(*[-land]|*) then choice name(Cast exiled card) name(Cast exiled card) activate castcard(restricted) and!( if cantargetcard(*|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[-land]|*) then choice name(Don't cast exiled card) name(Don't cast exiled card) moveto(ownerexile)])) oneshot )!
auto={4}{B}{B}{B}{D(*|myhand)}{D(*|myhand)}:name(Discard 2 cards) target(<2>*[zpos<=2]|opponentlibrary) moveto(myexile) and!( transforms((,newability[if cantargetcard(*[land]|*) then if compare(controllerturn)~morethan~0 then if can play land then choice name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) activate castcard(restricted putinplay) and!( if cantargetcard(*[land]|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[land]|*) then choice name(Don't play exiled land) name(Don't play exiled land) moveto(ownerexile)],newability[if cantargetcard(*[-land]|*) then choice name(Cast exiled card) name(Cast exiled card) activate castcard(restricted) and!( if cantargetcard(*|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[-land]|*) then choice name(Don't cast exiled card) name(Don't cast exiled card) moveto(ownerexile)])) oneshot )!
auto={4}{B}{B}{B}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}:name(Discard 3 cards) target(<3>*[zpos<=3]|opponentlibrary) moveto(myexile) and!( transforms((,newability[if cantargetcard(*[land]|*) then if compare(controllerturn)~morethan~0 then if can play land then choice name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) activate castcard(restricted putinplay) and!( if cantargetcard(*[land]|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[land]|*) then choice name(Don't play exiled land) name(Don't play exiled land) moveto(ownerexile)],newability[if cantargetcard(*[-land]|*) then choice name(Cast exiled card) name(Cast exiled card) activate castcard(restricted) and!( if cantargetcard(*|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[-land]|*) then choice name(Don't cast exiled card) name(Don't cast exiled card) moveto(ownerexile)])) oneshot )!
auto={4}{B}{B}{B}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}:name(Discard 4 cards) target(<4>*[zpos<=4]|opponentlibrary) moveto(myexile) and!( transforms((,newability[if cantargetcard(*[land]|*) then if compare(controllerturn)~morethan~0 then if can play land then choice name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) activate castcard(restricted putinplay) and!( if cantargetcard(*[land]|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[land]|*) then choice name(Don't play exiled land) name(Don't play exiled land) moveto(ownerexile)],newability[if cantargetcard(*[-land]|*) then choice name(Cast exiled card) name(Cast exiled card) activate castcard(restricted) and!( if cantargetcard(*|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[-land]|*) then choice name(Don't cast exiled card) name(Don't cast exiled card) moveto(ownerexile)])) oneshot )!
auto={4}{B}{B}{B}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}:name(Discard 5 cards) target(<5>*[zpos<=5]|opponentlibrary) moveto(myexile) and!( transforms((,newability[if cantargetcard(*[land]|*) then if compare(controllerturn)~morethan~0 then if can play land then choice name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) activate castcard(restricted putinplay) and!( if cantargetcard(*[land]|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[land]|*) then choice name(Don't play exiled land) name(Don't play exiled land) moveto(ownerexile)],newability[if cantargetcard(*[-land]|*) then choice name(Cast exiled card) name(Cast exiled card) activate castcard(restricted) and!( if cantargetcard(*|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[-land]|*) then choice name(Don't cast exiled card) name(Don't cast exiled card) moveto(ownerexile)])) oneshot )!
auto={4}{B}{B}{B}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}:name(Discard 6 cards) target(<6>*[zpos<=6]|opponentlibrary) moveto(myexile) and!( transforms((,newability[if cantargetcard(*[land]|*) then if compare(controllerturn)~morethan~0 then if can play land then choice name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) activate castcard(restricted putinplay) and!( if cantargetcard(*[land]|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[land]|*) then choice name(Don't play exiled land) name(Don't play exiled land) moveto(ownerexile)],newability[if cantargetcard(*[-land]|*) then choice name(Cast exiled card) name(Cast exiled card) activate castcard(restricted) and!( if cantargetcard(*|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[-land]|*) then choice name(Don't cast exiled card) name(Don't cast exiled card) moveto(ownerexile)])) oneshot )!
auto={4}{B}{B}{B}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}:name(Discard 7 cards) target(<7>*[zpos<=7]|opponentlibrary) moveto(myexile) and!( transforms((,newability[if cantargetcard(*[land]|*) then if compare(controllerturn)~morethan~0 then if can play land then choice name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) activate castcard(restricted putinplay) and!( if cantargetcard(*[land]|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[land]|*) then choice name(Don't play exiled land) name(Don't play exiled land) moveto(ownerexile)],newability[if cantargetcard(*[-land]|*) then choice name(Cast exiled card) name(Cast exiled card) activate castcard(restricted) and!( if cantargetcard(*|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[-land]|*) then choice name(Don't cast exiled card) name(Don't cast exiled card) moveto(ownerexile)])) oneshot )!
auto={4}{B}{B}{B}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}:name(Discard 8 cards) target(<8>*[zpos<=8]|opponentlibrary) moveto(myexile) and!( transforms((,newability[if cantargetcard(*[land]|*) then if compare(controllerturn)~morethan~0 then if can play land then choice name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) activate castcard(restricted putinplay) and!( if cantargetcard(*[land]|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[land]|*) then choice name(Don't play exiled land) name(Don't play exiled land) moveto(ownerexile)],newability[if cantargetcard(*[-land]|*) then choice name(Cast exiled card) name(Cast exiled card) activate castcard(restricted) and!( if cantargetcard(*|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[-land]|*) then choice name(Don't cast exiled card) name(Don't cast exiled card) moveto(ownerexile)])) oneshot )!
auto={4}{B}{B}{B}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}:name(Discard 9 cards) target(<9>*[zpos<=9]|opponentlibrary) moveto(myexile) and!( transforms((,newability[if cantargetcard(*[land]|*) then if compare(controllerturn)~morethan~0 then if can play land then choice name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) activate castcard(restricted putinplay) and!( if cantargetcard(*[land]|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[land]|*) then choice name(Don't play exiled land) name(Don't play exiled land) moveto(ownerexile)],newability[if cantargetcard(*[-land]|*) then choice name(Cast exiled card) name(Cast exiled card) activate castcard(restricted) and!( if cantargetcard(*|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[-land]|*) then choice name(Don't cast exiled card) name(Don't cast exiled card) moveto(ownerexile)])) oneshot )!
auto={4}{B}{B}{B}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}:name(Discard 10 cards) target(<10>*[zpos<=10]|opponentlibrary) moveto(myexile) and!( transforms((,newability[if cantargetcard(*[land]|*) then if compare(controllerturn)~morethan~0 then if can play land then choice name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) name(Put exiled land in play) activate castcard(restricted putinplay) and!( if cantargetcard(*[land]|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[land]|*) then choice name(Don't play exiled land) name(Don't play exiled land) moveto(ownerexile)],newability[if cantargetcard(*[-land]|*) then choice name(Cast exiled card) name(Cast exiled card) activate castcard(restricted) and!( if cantargetcard(*|exile) then moveto(ownerexile) )!],newability[if cantargetcard(*[-land]|*) then choice name(Don't cast exiled card) name(Don't cast exiled card) moveto(ownerexile)])) oneshot )!
text=Whenever a creature deals combat damage to one of your opponents, its controller may pay 1 life. If they do, they draw a card. -- {4}{B}{B}{B}, Discard X cards: Exile the top X cards of target opponent's library. You may play lands and cast spells from among cards exiled this way without paying their mana costs.
mana={1}{B}{B}
type=Legendary Creature
subtype=Phyrexian Praetor
power=3
toughness=3
[/card]
[card]
name=Gixian Infiltrator
auto=@sacrificed(other *|mybattlefield):counter(1/1) all(this)
text=Whenever you sacrifice another permanent, put a +1/+1 counter on Gixian Infiltrator.
@@ -38490,6 +38531,39 @@ power=4
toughness=4
[/card]
[card]
name=Gurgling Anointer
abilities=flying
auto={0}:name(Draw test) draw:1 controller
auto=_SECOND_DRAW_name(Put 1/1 counter) counter(1/1)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~0}:name(Return creature) name(Return creature) target(other creature[manacost<=0]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~1}:name(Return creature) name(Return creature) target(other creature[manacost<=1]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~2}:name(Return creature) name(Return creature) target(other creature[manacost<=2]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~3}:name(Return creature) name(Return creature) target(other creature[manacost<=3]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~4}:name(Return creature) name(Return creature) target(other creature[manacost<=4]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~5}:name(Return creature) name(Return creature) target(other creature[manacost<=5]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~6}:name(Return creature) name(Return creature) target(other creature[manacost<=6]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~7}:name(Return creature) name(Return creature) target(other creature[manacost<=7]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~8}:name(Return creature) name(Return creature) target(other creature[manacost<=8]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~9}:name(Return creature) name(Return creature) target(other creature[manacost<=9]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~10}:name(Return creature) name(Return creature) target(other creature[manacost<=10]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~11}:name(Return creature) name(Return creature) target(other creature[manacost<=11]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~12}:name(Return creature) name(Return creature) target(other creature[manacost<=12]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~13}:name(Return creature) name(Return creature) target(other creature[manacost<=13]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~14}:name(Return creature) name(Return creature) target(other creature[manacost<=14]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~15}:name(Return creature) name(Return creature) target(other creature[manacost<=15]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~16}:name(Return creature) name(Return creature) target(other creature[manacost<=16]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~17}:name(Return creature) name(Return creature) target(other creature[manacost<=17]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~18}:name(Return creature) name(Return creature) target(other creature[manacost<=18]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~19}:name(Return creature) name(Return creature) target(other creature[manacost<=19]|mygraveyard) moveto(mybattlefield)
auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~morethan~19}:name(Return creature) name(Return creature) target(other creature[manacost<=20]|mygraveyard) moveto(mybattlefield)
text=Flying -- Whenever you draw your second card each turn, put a +1/+1 counter on Gurgling Anointer. -- When Gurgling Anointer dies, return another target creature card with mana value less than or equal to Gurgling Anointer's power from your graveyard to the battlefield.
mana={2}{B}
type=Creature
subtype=Phyrexian Horror
power=1
toughness=3
[/card]
[card]
name=Gurmag Drowner
aicode=activate transforms((,newability[target(*[zpos<=4]|mylibrary) moveto(myhand) and!( all(*[zpos<=4]|mylibrary) moveto(mygraveyard) )!])) ueot
auto=may name(Exploit) exploits target(creature|mybattlefield) && name(look) reveal:4 optionone name(Get a card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put in graveyard) all(*|reveal) moveto(graveyard) optiontwoend revealend
@@ -42367,6 +42441,17 @@ mana={4}{U}{U}{U}
type=Instant
[/card]
[card]
name=Hurkyl, Master Wizard
aicode=activate transforms((,newability[if thisturn(instant[-creature]|mystack)~morethan~0 then if type(instant[zpos<=5]|mylibrary)~morethan~0 then ability$!name(Put instant in hand) name(Put instant in hand) name(Put instant in hand) target(instant[zpos<=5]|mylibrary) moveto(myhand)!$ controller],newability[if thisturn(sorcery[-creature]|mystack)~morethan~0 then if type(sorcery[zpos<=5]|mylibrary)~morethan~0 then ability$!name(Put sorcery in hand) name(Put sorcery in hand) name(Put sorcery in hand) target(sorcery[zpos<=5]|mylibrary) moveto(myhand)!$ controller],newability[if thisturn(artifact[-creature]|mystack)~morethan~0 then if type(artifact[zpos<=5]|mylibrary)~morethan~0 then ability$!name(Put artifact in hand) name(Put artifact in hand) name(Put instant in hand) target(artifact[zpos<=5]|mylibrary) moveto(myhand)!$ controller],newability[if thisturn(enchantment[-creature]|mystack)~morethan~0 then if type(enchantment[zpos<=5]|mylibrary)~morethan~0 then ability$!name(Put enchantment in hand) name(Put enchantment in hand) name(Put enchantment in hand) target(enchantment[zpos<=5]|mylibrary) moveto(myhand)!$ controller],newability[if thisturn(planeswalker[-creature]|mystack)~morethan~0 then if type(planeswalker[zpos<=5]|mylibrary)~morethan~0 then ability$!name(Put planeswalker in hand) name(Put planeswalker in hand) name(Put planeswalker in hand) target(planeswalker[zpos<=5]|mylibrary) moveto(myhand)!$ controller])) oneshot
auto=@each my endofturn restriction{thisturn(*[-creature]|mystack)~morethan~0}:name(Look top 5) reveal:5 optionone name(Choose noncreature cards) target(<upto:5>*[-land&-creature]|reveal) moveto(mylibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(Put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend afterrevealed all(this) transforms((,newability[if thisturn(instant[-creature]|mystack)~morethan~0 then if type(instant[tobecast]|mylibrary)~morethan~0 then ability$!name(Put instant in hand) name(Put instant in hand) name(Put instant in hand) target(instant[tobecast]|mylibrary) moveto(myhand)!$ controller],newability[if thisturn(sorcery[-creature]|mystack)~morethan~0 then if type(sorcery[tobecast]|mylibrary)~morethan~0 then ability$!name(Put sorcery in hand) name(Put sorcery in hand) name(Put sorcery in hand) target(sorcery[tobecast]|mylibrary) moveto(myhand)!$ controller],newability[if thisturn(artifact[-creature]|mystack)~morethan~0 then if type(artifact[tobecast]|mylibrary)~morethan~0 then ability$!name(Put artifact in hand) name(Put artifact in hand) name(Put instant in hand) target(artifact[tobecast]|mylibrary) moveto(myhand)!$ controller],newability[if thisturn(enchantment[-creature]|mystack)~morethan~0 then if type(enchantment[tobecast]|mylibrary)~morethan~0 then ability$!name(Put enchantment in hand) name(Put enchantment in hand) name(Put enchantment in hand) target(enchantment[tobecast]|mylibrary) moveto(myhand)!$ controller],newability[if thisturn(planeswalker[-creature]|mystack)~morethan~0 then if type(planeswalker[tobecast]|mylibrary)~morethan~0 then ability$!name(Put planeswalker in hand) name(Put planeswalker in hand) name(Put planeswalker in hand) target(planeswalker[tobecast]|mylibrary) moveto(myhand)!$ controller])) oneshot afterrevealedend revealend
text=At the beginning of your end step, if you've cast a noncreature spell this turn, reveal the top five cards of your library. For each card type among noncreature spells you've cast this turn, you may put a card of that type from among the revealed cards into your hand. Put the rest on the bottom of your library in a random order.
mana={1}{U}{U}
type=Legendary Creature
subtype=Human Wizard Advisor
power=2
toughness=4
[/card]
[card]
name=Hurl Through Hell
target=creature
auto=if compare(controllerturn)~morethan~0 then name(Exile creature) name(Exile creature) moveto(myexile) and!( transforms((,newability[canplayfromexile uent],newability[anytypeofmana uent],newability[phaseaction[my endofturn next once checkex] moveTo(ownerexile)])) forever )!
@@ -56565,6 +56650,17 @@ text={T}: Add {3}. Spend this mana only to cast artifact spells.
type=Land
[/card]
[card]
name=Mishra, Claimed by Gix
auto=@combat(attacking) source(this) restriction{type(Phyrexian Dragon Engine[attacking]|mybattlefield)~morethan~0}:name(Meld Mishra) moveto(mysideboard) and!( name(Meld Mishra) target(Phyrexian Dragon Engine[attacking]|mybattlefield) moveto(mysideboard) and!( token(Mishra, Lost to Phyrexia) and!( transforms((,newability[ninjutsu])) ueot )! )! )!
auto=@each my blockers:name(Opponent loses life) lifeleech:-type:creature[attacking]:mybattlefield opponent
text=Whenever you attack, each opponent loses X life and you gain X life, where X is the number of attacking creatures. If Mishra, Claimed by Gix and a creature named Phyrexian Dragon Engine are attacking, and you both own and control them, exile them, then meld them into Mishra, Lost to Phyrexia. It enters the battlefield tapped and attacking.
mana={2}{B}{R}
type=Legendary Creature
subtype=Phyrexian Human Artificer
power=3
toughness=5
[/card]
[card]
name=Mishra, Eminent One
auto=@each my combatbegins:target(artifact[-creature]|myBattlefield) clone and!( transforms((artifact creature Construct,setpower=4,settoughness=4,haste,treason)) forever )!
text=At the beginning of combat on your turn, create a token that's a copy of target noncreature artifact you control, except its name is Mishra's Warform and it's a 4/4 Construct artifact creature in addition to its other types. It gains haste until end of turn. Sacrifice it at the beginning of the next end step.
@@ -56587,6 +56683,37 @@ power=2
toughness=1
[/card]
[card]
name=Mishra, Lost to Phyrexia
auto=name(Deal 3 Damage) ability$!may name(Deal 3 Damage) name(Deal 3 Damage) damage:3 target(player^creature^planeswalker)!$ controller
auto=if type(*[artifact;planeswalker]|battlefield)~morethan~0 then name(Destroy artifact or planeswalker) name(Destroy artifact or planeswalker) ability$!may name(Destroy artifact or planeswalker) name(Destroy artifact or planeswalker) target(*[planeswalker;artifact]|battlefield) destroy!$ controller
auto=if type(*|opponenthand)~morethan~0 then name(Opponent discards) may name(Opponent discards) ability$!name(Discard 2 cards) name(Discard 2 cards) notatarget(<2>*|myhand) reject!$ opponent
auto=name(Your creatures gain menace and trample) ability$!may name(Your creatures gain menace and trample) name(Your creatures gain menace and trample) all(creature|mybattlefield) transforms((,newability[menace],newability[trample])) ueot!$ controller
auto=if type(creature|opponentbattlefield)~morethan~0 then name(Opponent creatures gain -1/-1) name(Opponent creatures gain -1/-1) ability$!may name(Opponent creatures gain -1/-1) name(Opponent creatures gain -1/-1) all(creature|opponentbattlefield) transforms((,newability[-1/-1])) ueot!$ controller
auto=name(Create powerstones) ability$!may name(Create powerstones) name(Create powerstones) token(Powerstone)*2 and!( tap(noevent) )!!$ controller
auto=_ATTACKING_may name(Deal 3 Damage) ability$!name(Deal 3 Damage) damage:3 target(player^creature^planeswalker)!$ controller
auto=@combat(attacking) source(this) restriction{type(*[artifact;planeswalker]|battlefield)~morethan~0}:may name(Destroy artifact or planeswalker) ability$!name(Destroy artifact or planeswalker) target(*[planeswalker;artifact]|battlefield) destroy!$ controller
auto=@combat(attacking) source(this) restriction{type(*|opponenthand)~morethan~0}:may name(Opponent discards) ability$!name(Discard 2 cards) notatarget(<2>*|myhand) reject!$ opponent
auto=_ATTACKING_may name(Your creatures gain menace and trample) all(creature|mybattlefield) transforms((,newability[menace],newability[trample])) ueot
auto=@combat(attacking) source(this) restriction{type(creature|opponentbattlefield)~morethan~0}:may name(Opponent creatures gain -1/-1) all(creature|opponentbattlefield) transforms((,newability[-1/-1])) ueot
auto=_ATTACKING_may name(Create powerstones) token(Powerstone)*2 and!( tap(noevent) )!
auto=@movedTo(this|graveyard) from(battlefield):name(Return melder) name(Return melder) ability$!name(Return Mishra, Claimed by Gix) name(Return Mishra, Claimed by Gix) target(Mishra^ Claimed by Gix|mysideboard) moveTo(myGraveyard)!$ controller
auto=@movedTo(this|hand) from(battlefield):name(Return melder) name(Return melder) ability$!name(Return Mishra, Claimed by Gix) name(Return Mishra, Claimed by Gix) target(Mishra^ Claimed by Gix|mysideboard) moveTo(myHand)!$ controller
auto=@movedTo(this|exile) from(battlefield):name(Return melder) name(Return melder) ability$!name(Return Mishra, Claimed by Gix) name(Return Mishra, Claimed by Gix) target(Mishra^ Claimed by Gix|mysideboard) moveTo(myExile)!$ controller
auto=@movedTo(this|library) from(battlefield):name(Return melder) name(Return melder) ability$!name(Return Mishra, Claimed by Gix) name(Return Mishra, Claimed by Gix) target(Mishra^ Claimed by Gix|mysideboard) moveTo(myLibrary)!$ controller
auto=@movedTo(this|commandzone) from(battlefield):name(Return melder) name(Return melder) ability$!name(Return Mishra, Claimed by Gix) name(Return Mishra, Claimed by Gix) target(Mishra^ Claimed by Gix|mysideboard) moveTo(myCommandzone)!$ controller
auto=@movedTo(this|graveyard) from(battlefield):name(Return melder) name(Return melder) ability$!name(Return Phyrexian Dragon Engine) name(Return Phyrexian Dragon Engine) target(Phyrexian Dragon Engine|mysideboard) moveTo(myGraveyard)!$ controller
auto=@movedTo(this|hand) from(battlefield):name(Return melder) name(Return melder) ability$!name(Return Phyrexian Dragon Engine) name(Return Phyrexian Dragon Engine) target(Phyrexian Dragon Engine|mysideboard) moveTo(myHand)!$ controller
auto=@movedTo(this|exile) from(battlefield):name(Return melder) name(Return melder) ability$!name(Return Phyrexian Dragon Engine) name(Return Phyrexian Dragon Engine) target(Phyrexian Dragon Engine|mysideboard) moveTo(myExile)!$ controller
auto=@movedTo(this|library) from(battlefield):name(Return melder) name(Return melder) ability$!name(Return Phyrexian Dragon Engine) name(Return Phyrexian Dragon Engine) target(Phyrexian Dragon Engine|mysideboard) moveTo(myLibrary)!$ controller
auto=@movedTo(this|commandzone) from(battlefield):name(Return melder) name(Return melder) ability$!name(Return Phyrexian Dragon Engine) name(Return Phyrexian Dragon Engine) target(Phyrexian Dragon Engine|mysideboard) moveTo(myCommandzone)!$ controller
text=Whenever Mishra, Lost to Phyrexia enters the battlefield or attacks, choose three -- Target opponent discards two cards. -- Mishra deals 3 damage to any target. -- Destroy target artifact or planeswalker. -- Creatures you control gain menace and trample until end of turn. -- Creatures you don't control get -1/-1 until end of turn. -- Create two tapped Powerstone tokens.
color=black,red
type=Legendary Artifact Creature
subtype=Phyrexian Artificer
power=9
toughness=9
[/card]
[card]
name=Mishra, Tamer of Mak Fawa
auto=@targeted(*|myBattlefield) from(*|opponentzones):choice name(This spell costs a sacrifice) name(This spell costs a sacrifice) target(*|opponentzones) transforms((,newability[choice name(Counter spell) target(*|mystack) fizzle],newability[if type(*|myBattlefield)~morethan~0 then choice name(Sacrifice a permanent) name(Sacrifice a permanent) target(*|mybattlefield) sacrifice])) oneshot
auto=lord(artifact|mygraveyard) {1}{B}{R}:name(Unearth) moveto(mybattlefield) and!( transforms((,newability[haste],newability[unearth],newability[exiledeath])) forever )! asSorcery
@@ -58076,6 +58203,18 @@ power=1
toughness=1
[/card]
[card]
name=Myrel, Shield of Argive
auto=this(variable{controllerturn}>0) maxCast(*)0 opponent
auto=this(variable{controllerturn}>0) lord(*[artifact;enchantment;creature]|opponentbattlefield) noactivatedability
auto=_ATTACKING_name(Create soldiers) foreach(soldier|mybattlefield) token(Soldier,Artifact Creature Soldier,1/1)
text=During your turn, your opponents can't cast spells or activate abilities of artifacts, creatures, or enchantments. -- Whenever Myrel, Shield of Argive attacks, create X 1/1 colorless Soldier artifact creature tokens, where X is the number of Soldiers you control.
mana={3}{W}
type=Legendary Creature
subtype=Human Soldier
power=3
toughness=4
[/card]
[card]
name=Myriad Construct
kicker={3}
auto=if paid(kicker) then foreach(land[-basic]|opponentBattlefield) counter(1/1)
@@ -68059,6 +68198,20 @@ power=*
toughness=*
[/card]
[card]
name=Queen Kayla bin-Kroog
auto={4}{T}:name(Discard and draw) all(this) counter(0/0,1,QueenEffect) && all(*|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature;artifact]|*) then becomes(tobetaken) ueot],newability[draw:1 controller])) ueot )! asSorcery
auto=@counteradded(0/0,1,QueenEffect) from(this):name(Return artifact or creature) transforms((,newability[if type(tobetaken[manacost=1]|mygraveyard)~morethan~0 then choice name(Don't return anything with cost 1) name(Don't return anything with cost 1) donothing],newability[if type(artifact[tobetaken&manacost=1]|mygraveyard)~morethan~0 then choice name(Return artifact with cost 1) name(Return artifact with cost 1) target(artifact[tobetaken&manacost=1]|mygraveyard) moveto(mybattlefield)],newability[if type(creature[tobetaken&manacost=1]|mygraveyard)~morethan~0 then choice name(Return creature with cost 1) name(Return creature with cost 1) target(creature[tobetaken&manacost=1]|mygraveyard) moveto(mybattlefield)])) oneshot
auto=@counteradded(0/0,1,QueenEffect) from(this):name(Return artifact or creature) transforms((,newability[if type(tobetaken[manacost=2]|mygraveyard)~morethan~0 then choice name(Don't return anything with cost 2) name(Don't return anything with cost 2) donothing],newability[if type(artifact[tobetaken&manacost=2]|mygraveyard)~morethan~0 then choice name(Return artifact with cost 2) name(Return artifact with cost 2) target(artifact[tobetaken&manacost=2]|mygraveyard) moveto(mybattlefield)],newability[if type(creature[tobetaken&manacost=2]|mygraveyard)~morethan~0 then choice name(Return creature with cost 2) name(Return creature with cost 2) target(creature[tobetaken&manacost=2]|mygraveyard) moveto(mybattlefield)])) oneshot
auto=@counteradded(0/0,1,QueenEffect) from(this):name(Return artifact or creature) transforms((,newability[if type(tobetaken[manacost=3]|mygraveyard)~morethan~0 then choice name(Don't return anything with cost 3) name(Don't return anything with cost 3) donothing],newability[if type(artifact[tobetaken&manacost=3]|mygraveyard)~morethan~0 then choice name(Return artifact with cost 3) name(Return artifact with cost 3) target(artifact[tobetaken&manacost=3]|mygraveyard) moveto(mybattlefield)],newability[if type(creature[tobetaken&manacost=3]|mygraveyard)~morethan~0 then choice name(Return creature with cost 3) name(Return creature with cost 3) target(creature[tobetaken&manacost=3]|mygraveyard) moveto(mybattlefield)])) oneshot
auto=@counteradded(0/0,1,QueenEffect) from(this):name(Effect ends) removeallcounters(0/0,1,QueenEffect) notrg
text={4}, {T}: Discard all the cards in your hand, then draw that many cards. You may choose an artifact or creature card with mana value 1 you discarded this way, then do the same for artifact or creature cards with mana values 2 and 3. Return those cards to the battlefield. Activate only as a sorcery.
mana={1}{R}{W}
type=Legendary Creature
subtype=Human Noble
power=2
toughness=3
[/card]
[card]
name=Queen Marchesa
abilities=deathtouch,haste
auto=_MONARCH_CONTROLLER_
@@ -69471,6 +69624,16 @@ power=5
toughness=5
[/card]
[card]
name=Ravenous Gigamole
auto=name(Mill 3 cards) all(*[zpos<=2]|mylibrary) moveto(mygraveyard) and!( transforms((tobereturn,newability[all(*[zpos=3]|mylibrary) moveto(mygraveyard) and!( transforms((tobereturn,newability[if type(tobereturn[creature]|mygraveyard)~morethan~0 then choice name(Return a creature) name(Return a creature) target(tobereturn[creature]|mygraveyard) moveto(myhand)],newability[choice name(Put 1/1 counter) target(Ravenous Gigamole[fresh]|mybattlefield) counter(1/1)])) ueot )!])) ueot )!
text=When Ravenous Gigamole enters the battlefield, mill three cards. You may put a creature card from among the cards milled this way into your hand. If you don't, put a +1/+1 counter on Ravenous Gigamole. (To mill a card, put the top card of your library into your graveyard.)
mana={3}{B}
type=Creature
subtype=Mole Horror
power=2
toughness=3
[/card]
[card]
name=Ravenous Gigantotherium
auto=may target(<anyamount>other creature|mybattlefield) sacrifice && counter(1/1,3) all(this)
auto=target(creature|opponentbattlefield) dynamicability<!powerstrike eachother!>
@@ -84527,6 +84690,15 @@ mana={1}{R}
type=Sorcery
[/card]
[card]
name=Static Net
auto=(blink)forsrc target(*[-land]|opponentbattlefield)
auto=life:2 controller
auto=name(Create powerstone) token(Powerstone) and!( tap(noevent) )!
text=When Static Net enters the battlefield, exile target nonland permanent an opponent controls until Static Net leaves the battlefield. -- When Static Net enters the battlefield, you gain 2 life and create a tapped Powerstone token. (It's an artifact with "{T}: Add {C}. This mana can't be spent to cast a nonartifact spell.")
mana={3}{W}
type=Enchantment
[/card]
[card]
name=Static Orb
auto=aslongas sourcenottap:lord(*) doesnotuntap
auto=@each my untap:untap notatarget(<upto:2>*[tapped]|mybattlefield)
@@ -90121,6 +90293,13 @@ mana={3}
type=Legendary Artifact
[/card]
[card]
name=The Stone Brain
auto={2}{T}:name(Exile) moveto(exile) && ability$!name(Choose a card name) chooseanameopp name(Search that cards) target(<upto:4>*[chosenname]|opponentgraveyard,opponentlibrary,opponenthand) transforms((,newability[if cantargetcard(*|hand) then moveto(exile) and!( draw:1 controller )!],newability[if cantargetcard(*|graveyard) then moveto(exile)],newability[if cantargetcard(*|library) then moveto(exile)],newability[shuffle])) oneshot chooseend!$ controller asSorcery
text={2}, {T}, Exile The Stone Brain: Choose a card name. Search target opponent's graveyard, hand, and library for up to four cards with that name and exile them. That player shuffles, then draws a card for each card exiled from their hand this way. Activate only as a sorcery.
mana={2}
type=Legendary Artifact
[/card]
[card]
name=The Surgical Bay
auto=tap(noevent)
auto={T}:Add{U}
@@ -90141,6 +90320,15 @@ power=10
toughness=10
[/card]
[card]
name=The Temporal Anchor
aicode=activate transforms((,newability[target(<upto:2>*[zpos<=2]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveTo(myreveal) and!( bottomoflibrary and!( moveto(myexile) and!( beocomes(playable) forever )! )! )!])) forever])) forever
auto=@each my upkeep restriction{type(*|mylibrary)~morethan~2}:name(Scry 2) name(Scry 2) transforms((,newability[name(Scry 2) scry:2 scrycore delayed dontshow transforms((,newability[all(*[fresh&zpos>=plibrarycountminus1minusend]|mylibrary) moveto(exile) and!( becomes(playable) forever )!])) forever scrycoreend scryend])) forever
auto=this(variable{controllerturn}>0) lord(playable|myexile) canplayfromexile
text=At the beginning of your upkeep, scry 2. -- Whenever you choose to put one or more cards on the bottom of your library while scrying, exile that many cards from the bottom of your library. -- During your turn, you may play cards exiled with The Temporal Anchor.
mana={3}{U}{U}{U}
type=Legendary Artifact
[/card]
[card]
name=The Three Seasons
auto=counter(0/0,1,Lore)
auto=@each my firstmain:counter(0/0,1,Lore)
@@ -90623,6 +90811,20 @@ type=Artifact
subtype=Equipment
[/card]
[card]
name=Thran Spider
abilities=reach
aicode=activate transforms((,newability[if type(artifact[zpos<=4]|myLibrary)~morethan~0 then target(artifact[zpos<=4]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! else all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! ])) oneshot
auto={7}:name(Look top 4 cards) reveal:4 optionone name(Get an artifact) target(<upto:1>artifact|reveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend
auto=name(Create powerstone) token(Powerstone) and!( tap(noevent) )!
auto=ability$!name(Create powerstone) token(Powerstone) and!( tap(noevent) )! !$ opponent
text=Reach -- When Thran Spider enters the battlefield, you and target opponent each create a tapped Powerstone token. -- {7}: Look at the top four cards of your library. You may reveal an artifact card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
mana={3}
type=Artifact Creature
subtype=Spider
power=2
toughness=4
[/card]
[card]
name=Thran Temporal Gateway
auto={4}{T}:notatarget(*[artifact;legendary;saga]|myhand) moveTo(mybattlefield)
text={4}, {T}: You may put a historic permanent card from your hand onto the battlefield. (Artifacts, legendaries, and Sagas are historic.)
@@ -91945,6 +92147,16 @@ power=3
toughness=1
[/card]
[card]
name=Tomakul Scrapsmith
auto=name(Mill 3 cards) all(*[zpos<=2]|mylibrary) moveto(mygraveyard) and!( transforms((tobereturn,newability[all(*[zpos=3]|mylibrary) moveto(mygraveyard) and!( transforms((tobereturn,newability[if type(tobereturn[artifact]|mygraveyard)~morethan~0 then choice name(Return an artifact) name(Return an artifact) target(tobereturn[artifact]|mygraveyard) moveto(myhand)],newability[choice name(Put 1/1 counter) target(Tomakul Scrapsmith[fresh]|mybattlefield) counter(1/1)])) ueot )!])) ueot )!
text=When Tomakul Scrapsmith enters the battlefield, mill three cards. You may put an artifact card from among the cards milled this way into your hand. If you don't, put a +1/+1 counter on Tomakul Scrapsmith. (To mill a card, put the top card of your library into your graveyard.)
mana={2}{R}
type=Creature
subtype=Human Artificer
power=2
toughness=1
[/card]
[card]
name=Tomb Robber
abilities=menace
aicode=activate transforms((,newability[explores],newability[if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand)])) oneshot
@@ -94863,7 +95075,7 @@ type=Sorcery
[/card]
[card]
name=Unmoored Ego
auto=chooseanameopp name(Search that cards) target(<upto:4>*[chosenname]|opponentgraveyard,opponentlibrary,opponenthand) moveto(exile) and!( draw:1 opponent and!( shuffle opponent )! )! chooseend
auto=chooseanameopp name(Search that cards) target(<upto:4>*[chosenname]|opponentgraveyard,opponentlibrary,opponenthand) transforms((,newability[if cantargetcard(*|hand) then moveto(exile) and!( draw:1 controller )!],newability[if cantargetcard(*|graveyard) then moveto(exile)],newability[if cantargetcard(*|library) then moveto(exile)],newability[shuffle])) oneshot chooseend
text=Choose a card name. Search target opponent's graveyard, hand, and library for up to four cards with that name and exile them. That player shuffles their library, then draws a card for each card exiled from their hand this way.
mana={1}{U}{B}
type=Sorcery
@@ -95293,6 +95505,14 @@ power=4
toughness=4
[/card]
[card]
name=Urza's Sylex
auto={2}{W}{W}{T}:name(Exile and destroy) all(this) moveto(exile) and!( transforms((,newability[all(*[-land]|mybattlefield) destroy],newability[all(*[-land]|opponentbattlefield) destroy],newability[ability$!if type(land|mybattlefield)~morethan~6 then name(Choose lands to destroy) name(Choose lands to destroy) name(Choose lands to destroy) target(<type:land:mybattlefieldminus6minusend>land|mybattlefield) destroy!$ controller],newability[ability$!if type(land|mybattlefield)~morethan~6 then name(Choose lands to destroy) name(Choose lands to destroy) name(Choose lands to destroy) target(<type:land:mybattlefieldminus6minusend>land|mybattlefield) destroy!$ opponent])) oneshot )! asSorcery
auto=may name(Search planeswalker) pay({2}) name(Search planeswalker) target(planeswalker|mylibrary) moveto(myhand) and!( shuffle )!
text={2}{W}{W}, {T}, Exile Urza's Sylex: Each player chooses six lands they control. Destroy all other permanents. Activate only as a sorcery. -- When Urza's Sylex is put into exile from the battlefield, you may pay {2}. If you do, search your library for a planeswalker card, reveal it, put it into your hand, then shuffle.
mana={3}
type=Legendary Artifact
[/card]
[card]
name=Urza's Tome
auto={3}{T}:_LOOT_
auto={3}{T} restriction{type(*[artifact;legendary;saga]|mygraveyard)~morethan~0}:name(exile a historic card) draw:1 && transforms((,newability[notatarget(*[artifact;legendary;saga]|mygraveyard) moveto(exile)])) oneShot

View File

@@ -9813,145 +9813,196 @@ AACastCard::AACastCard(GameObserver* observer, int _id, MTGCardInstance * _sourc
void AACastCard::Update(float dt)
{
MTGAbility::Update(dt);
if (processed)
return;
if(cardNamed.size() && !theNamedCard)
{
if(cardNamed.find("randomcard") != string::npos){ //cast a random card from collection.
MTGCard *rndCard = NULL;
while(!rndCard || rndCard->data->isLand())
rndCard = MTGCollection()->getCardById(MTGCollection()->ids.at(std::rand() % (MTGCollection()->ids).size()));
cardNamed = rndCard->data->name;
}
if (cardNamed.find("imprintedcard") != string::npos)
{
if (source && source->currentimprintName.size())
{
cardNamed = source->currentimprintName;
}
}
theNamedCard = makeCard();
//if somehow the imprinted card leaves its zone destroy this...
if(cardNamed.find("imprintedcard") != string::npos && !theNamedCard)
{
this->forceDestroy = 1;
return;
}
}
if(putinplay)
{
MTGCardInstance * toCheck = (MTGCardInstance*)target;
toCheck->target = NULL;
toCheck->playerTarget = NULL;
toCheck->bypassTC = true;
TargetChooserFactory tcf(game);
TargetChooser * atc = tcf.createTargetChooser(toCheck->spellTargetType,toCheck);
if ((toCheck->hasType(Subtypes::TYPE_AURA) && !atc->validTargetsExist())||toCheck->isToken)
{
processed = true;
this->forceDestroy = 1;
return ;
}
SAFE_DELETE(atc);
}
if (restricted)
{
MTGCardInstance * toCheck = (MTGCardInstance*)target;
if(theNamedCard)
toCheck = theNamedCard;
if (game->currentActionPlayer->game->playRestrictions->canPutIntoZone(toCheck, source->controller()->game->stack) == PlayRestriction::CANT_PLAY)
{
processed = true;
this->forceDestroy = 1;
return ;
}
if(!allowedToCast(toCheck,source->controller()))
{
processed = true;
this->forceDestroy = 1;
return;
}
/*if(!toCheck->hasType(Subtypes::TYPE_INSTANT) && !(game->getCurrentGamePhase() == MTG_PHASE_FIRSTMAIN || game->getCurrentGamePhase() == MTG_PHASE_SECONDMAIN))
{
processed = true;
this->forceDestroy = 1;
return;
}*/
}
MTGCardInstance * toCheck = (MTGCardInstance*)target;
if(theNamedCard)
toCheck = theNamedCard;
if(toCheck && toCheck->spellTargetType.size())
{
string backupST = toCheck->spellTargetType;
if((toCheck->spellTargetType == "opponent") && (toCheck->owner != source->controller()))
toCheck->spellTargetType = "controller";
else if((toCheck->spellTargetType.find("|opponent") != string::npos) && (toCheck->owner != source->controller()))
{
string replaceMe = backupST;
toCheck->spellTargetType = cReplaceString(replaceMe, "|opponent", "|my");
}
//Since we control the card to cast, if the card should target an opponent,
//direct it to source ability controller->opponent
//example card is Bribery, if we cast it targeting from opponent's library,
//we should target the source ability controller->opponent
MTGAbility::Update(dt);
if (processed)
return;
if(cardNamed.size() && !theNamedCard)
{
if(cardNamed.find("randomcard") != string::npos){ //cast a random card from collection.
MTGCard *rndCard = NULL;
while(!rndCard || rndCard->data->isLand())
rndCard = MTGCollection()->getCardById(MTGCollection()->ids.at(std::rand() % (MTGCollection()->ids).size()));
cardNamed = rndCard->data->name;
}
if (cardNamed.find("imprintedcard") != string::npos)
{
if (source && source->currentimprintName.size())
{
cardNamed = source->currentimprintName;
}
}
theNamedCard = makeCard();
//if somehow the imprinted card leaves its zone destroy this...
if(cardNamed.find("imprintedcard") != string::npos && !theNamedCard)
{
this->forceDestroy = 1;
return;
}
}
if(putinplay)
{
MTGCardInstance * toCheck = (MTGCardInstance*)target;
toCheck->target = NULL;
toCheck->playerTarget = NULL;
toCheck->bypassTC = true;
TargetChooserFactory tcf(game);
TargetChooser * atc = tcf.createTargetChooser(toCheck->spellTargetType,toCheck);
if ((toCheck->hasType(Subtypes::TYPE_AURA) && !atc->validTargetsExist())||toCheck->isToken)
{
processed = true;
this->forceDestroy = 1;
return;
}
SAFE_DELETE(atc);
}
if (restricted)
{
MTGCardInstance * toCheck = (MTGCardInstance*)target;
if(theNamedCard)
toCheck = theNamedCard;
if (game->currentActionPlayer->game->playRestrictions->canPutIntoZone(toCheck, source->controller()->game->stack) == PlayRestriction::CANT_PLAY)
{
processed = true;
if(andAbility) // Allow to use and!()! even when restriction occurred (e.g. "Gix, Yawgmoth Praetor").
{
MTGAbility * andAbilityClone = andAbility->clone();
andAbilityClone->target = toCheck;
if(andAbility->oneShot)
{
andAbilityClone->resolve();
SAFE_DELETE(andAbilityClone);
}
else
{
andAbilityClone->addToGame();
}
}
this->forceDestroy = 1;
return ;
}
if(!allowedToCast(toCheck,source->controller()))
{
processed = true;
if(andAbility) // Allow to use and!()! even when restriction occurred (e.g. "Gix, Yawgmoth Praetor").
{
MTGAbility * andAbilityClone = andAbility->clone();
andAbilityClone->target = toCheck;
if(andAbility->oneShot)
{
andAbilityClone->resolve();
SAFE_DELETE(andAbilityClone);
}
else
{
andAbilityClone->addToGame();
}
}
this->forceDestroy = 1;
return;
}
if(toCheck->isLand())
{
TargetChooser* tc = NEW TypeTargetChooser(game, "land");
if(game->currentActionPlayer->game->battlefield->seenThisTurn(tc, Constants::CAST_DONT_CARE, false) >= game->currentActionPlayer->game->playRestrictions->getMaxPerTurnRestrictionByTargetChooser(tc)->maxPerTurn){
processed = true;
if(andAbility) // Allow to use and!()! even when restriction occurred (e.g. "Gix, Yawgmoth Praetor").
{
MTGAbility * andAbilityClone = andAbility->clone();
andAbilityClone->target = toCheck;
if(andAbility->oneShot)
{
andAbilityClone->resolve();
SAFE_DELETE(andAbilityClone);
}
else
{
andAbilityClone->addToGame();
}
}
this->forceDestroy = 1;
return;
}
}
/*if(!toCheck->hasType(Subtypes::TYPE_INSTANT) && !(game->getCurrentGamePhase() == MTG_PHASE_FIRSTMAIN || game->getCurrentGamePhase() == MTG_PHASE_SECONDMAIN))
{
processed = true;
this->forceDestroy = 1;
return;
}*/
}
MTGCardInstance * toCheck = (MTGCardInstance*)target;
if(theNamedCard)
toCheck = theNamedCard;
if(toCheck && toCheck->spellTargetType.size())
{
string backupST = toCheck->spellTargetType;
if((toCheck->spellTargetType == "opponent") && (toCheck->owner != source->controller()))
toCheck->spellTargetType = "controller";
else if((toCheck->spellTargetType.find("|opponent") != string::npos) && (toCheck->owner != source->controller()))
{
string replaceMe = backupST;
toCheck->spellTargetType = cReplaceString(replaceMe, "|opponent", "|my");
}
//Since we control the card to cast, if the card should target an opponent,
//direct it to source ability controller->opponent
//example card is Bribery, if we cast it targeting from opponent's library,
//we should target the source ability controller->opponent
TargetChooserFactory tcf(game);
TargetChooser * stc = tcf.createTargetChooser(toCheck->spellTargetType,toCheck);
if (!stc->validTargetsExist()||toCheck->isToken)
{
toCheck->spellTargetType = backupST;
TargetChooserFactory tcf(game);
TargetChooser * stc = tcf.createTargetChooser(toCheck->spellTargetType,toCheck);
if (!stc->validTargetsExist()||toCheck->isToken)
{
toCheck->spellTargetType = backupST;
processed = true;
this->forceDestroy = 1;
return;
}
SAFE_DELETE(stc);
}
if (Spell * checkSpell = dynamic_cast<Spell*>(target))
{
toCheck = checkSpell->source;
}
if (!game->targetListIsSet(toCheck))
{
if(game->targetChooser)
game->targetChooser->Owner = source->controller();//sources controller is the caster
return;
}
resolveSpell();
this->forceDestroy = 1;
return;
processed = true;
this->forceDestroy = 1;
return;
}
SAFE_DELETE(stc);
}
if (Spell * checkSpell = dynamic_cast<Spell*>(target))
{
toCheck = checkSpell->source;
}
if (!game->targetListIsSet(toCheck))
{
if(game->targetChooser)
game->targetChooser->Owner = source->controller();//sources controller is the caster
return;
}
resolveSpell();
this->forceDestroy = 1;
return;
}
int AACastCard::isReactingToTargetClick(Targetable * card){return 0;}
int AACastCard::reactToTargetClick(Targetable * object)
{
if (MTGCardInstance * cObject = dynamic_cast<MTGCardInstance *>(object))
return reactToClick(cObject);
if (MTGCardInstance * cObject = dynamic_cast<MTGCardInstance *>(object))
return reactToClick(cObject);
if (waitingForAnswer)
{
if (tc->toggleTarget(object) == TARGET_OK_FULL)
{
waitingForAnswer = 0;
game->mLayers->actionLayer()->setCurrentWaitingAction(NULL);
return MTGAbility::reactToClick(source);
}
return 1;
}
return 0;
if (waitingForAnswer)
{
if (tc->toggleTarget(object) == TARGET_OK_FULL)
{
waitingForAnswer = 0;
game->mLayers->actionLayer()->setCurrentWaitingAction(NULL);
return MTGAbility::reactToClick(source);
}
return 1;
}
return 0;
}
MTGCardInstance * AACastCard::makeCard()
{
MTGCardInstance * card = NULL;
MTGCard * cardData = MTGCollection()->getCardByName(cardNamed);
if(!cardData) return NULL;
card = NEW MTGCardInstance(cardData, source->controller()->game);
card->owner = source->controller();
card->lastController = source->controller();
source->controller()->game->sideboard->addCard(card);
return card;
MTGCardInstance * card = NULL;
MTGCard * cardData = MTGCollection()->getCardByName(cardNamed);
if(!cardData) return NULL;
card = NEW MTGCardInstance(cardData, source->controller()->game);
card->owner = source->controller();
card->lastController = source->controller();
source->controller()->game->sideboard->addCard(card);
return card;
}
int AACastCard::resolveSpell()

View File

@@ -1085,7 +1085,7 @@ void GameObserver::gameStateBasedEffects()
MTGCardInstance * card = fc->cards[k];
card->fresh = 0; // Remove fresh attribute to cards put in commandzone last turn
}
MTGGameZone * fl = p->game->commandzone;
MTGGameZone * fl = p->game->library;
for (int k = 0; k < fl->nb_cards; k++)
{
MTGCardInstance * card = fl->cards[k];

View File

@@ -1022,7 +1022,7 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
canplay = false;
if (!cardDummy->isLand() && observer->currentActionPlayer->game->playRestrictions->canPutIntoZone(cardDummy, observer->currentActionPlayer->game->stack) == PlayRestriction::CANT_PLAY)
canplay = false;
if (!cardDummy->hasType(Subtypes::TYPE_INSTANT) && !cardDummy->StackIsEmptyandSorcerySpeed())
if ((cardDummy->owner == observer->currentActionPlayer) && !cardDummy->hasType(Subtypes::TYPE_INSTANT) && !cardDummy->StackIsEmptyandSorcerySpeed())
canplay = false;
SAFE_DELETE(cardDummy);
if(!canplay)