Fixed some primitives from issue #1085 and from Discord channel, fixed all curses primitives and targets, added new keywords "oppotgt" and "ctrltgt" to check wich player has been targeted from a card, fixed an issue on "chooseaname" ability.

This commit is contained in:
Vittorio Alfieri
2023-07-13 17:24:11 +02:00
parent c170733af6
commit fbfcb7d3ac
9 changed files with 298 additions and 174 deletions
@@ -1,7 +1,7 @@
grade=borderline grade=borderline
#Bordeline Primitives Pack for Wagic the Homebrew. #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 #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 11-07-2023 #I sorted this programmatically - Thanks to Vitty85 13-07-2023
[card] [card]
name=+2 Mace name=+2 Mace
auto={3}:equip auto={3}:equip
@@ -13139,12 +13139,10 @@ toughness=3
[/card] [/card]
[card] [card]
name=Calamity Bearer name=Calamity Bearer
auto=@damaged(creature|myBattlefield) from(*[giant]|myzones) turnlimited:damage:thatmuch all(trigger[to]) auto=transforms((,newability[double strike])) forever
auto=@damaged(creature|opponentBattlefield) from(*[giant]|*) turnlimited:damage:thatmuch all(trigger[to]) auto=@damaged(*|battlefield) from(*[-Calamity Bearer&giant]|myzones):name(Deals double damage) all(trigger[to]) name(Deals double damage) damage:thatmuch
auto=@damageof(player) from(*[giant]|myzones) turnlimited:damage:thatmuch controller auto=@damageof(player) from(*[-Calamity Bearer&giant]|myzones):name(Deals double damage) damage:thatmuch controller
auto=@damagefoeof(player) from(*[giant]|*) turnlimited:damage:thatmuch opponent auto=@damagefoeof(player) from(*[-Calamity Bearer&giant]|myzones):name(Deals double damage) damage:thatmuch opponent
auto=@damaged(planeswalker|myBattlefield) from(*[giant]|myzones) turnlimited:damage:thatmuch all(trigger[to])
auto=@damaged(planeswalker|opponentBattlefield) from(*[giant]|*) turnlimited:damage:thatmuch all(trigger[to])
text=If a Giant source you control would deal damage to a permanent or player, it deals double that damage to that permanent or player instead. text=If a Giant source you control would deal damage to a permanent or player, it deals double that damage to that permanent or player instead.
mana={2}{R}{R} mana={2}{R}{R}
type=Creature type=Creature
@@ -13205,9 +13203,9 @@ toughness=3
[/card] [/card]
[card] [card]
name=Caldaia Strongarm name=Caldaia Strongarm
auto=target(creature) counter(1/1,2)
other={3}{G}:name(Blitz) other={3}{G}:name(Blitz)
auto=if paid(alternative) then moveto(mybattlefield) and!( transforms((,newability[haste],newability[_DIES_draw:1],newability[treason])) forever )! asSorcery auto=if paid(alternative) then moveto(mybattlefield) and!( transforms((,newability[haste],newability[_DIES_draw:1 controller],newability[treason],newability[name(Put 1/1 counters) name(Put 1/1 counters) target(creature|battlefield) counter(1/1.2)])) forever )!
auto=ifnot paid(alternative) then name(Put 1/1 counters) name(Put 1/1 counters) target(creature|battlefield) counter(1/1,2)
text=When Caldaia Strongarm enters the battlefield, put two +1/+1 counters on target creature. -- Blitz {3}{G} (If you cast this spell for its blitz cost, it gains haste and "When this creature dies, draw a card." Sacrifice it at the beginning of the next end step.) text=When Caldaia Strongarm enters the battlefield, put two +1/+1 counters on target creature. -- Blitz {3}{G} (If you cast this spell for its blitz cost, it gains haste and "When this creature dies, draw a card." Sacrifice it at the beginning of the next end step.)
mana={4}{G} mana={4}{G}
type=Creature type=Creature
@@ -13257,8 +13255,12 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Call of the Death-Dweller name=Call of the Death-Dweller
target=<upto:2>creature[manacost<=3]|myGraveyard auto=emblem transforms((,newability[lord(creature[counter{0/0.1.Deathtouch}]|mybattlefield) deathtouch],newability[lord(creature[counter{0/0.1.Menace}]|mybattlefield) menace])) forever dontremove
auto=moveTo(myBattlefield) and!( transforms((,newability[counter(0/0.1.Deathtouch)],newability[this(counter{0/0.1.Deathtouch}>=1) deathtouch],newability[counter(0/0.1.Menace)],newability[this(counter{0/0.1.Menace}>=1) menace])) forever )! auto=if type(creature[manacost=0]|mygraveyard)~morethan~0 then choice name(Return creature with manacost 0) name(Return creature with manacost 0) target(creature[manacost=0]|mygraveyard) moveto(mybattlefield) and!( transforms((,newability[counter(0/0.1.Menace)],newability[counter(0/0.1.Deathtouch)],newability[if type(creature[manacost=0]|mygraveyard)~morethan~0 then choice name(Return another creature with manacost 0) name(Return another creature with manacost 0) target(creature[manacost=0]|mygraveyard) moveto(mybattlefield) and!( counter(0/0.1.Menace) && counter(0/0.1.Deathtouch) )!],newability[if type(creature[manacost=1]|mygraveyard)~morethan~0 then choice name(Return another creature with manacost 1) name(Return another creature with manacost 1) target(creature[manacost=1]|mygraveyard) moveto(mybattlefield) and!( counter(0/0.1.Menace) && counter(0/0.1.Deathtouch) )!],newability[if type(creature[manacost=2]|mygraveyard)~morethan~0 then choice name(Return another creature with manacost 2) name(Return another creature with manacost 2) target(creature[manacost=2]|mygraveyard) moveto(mybattlefield) and!( counter(0/0.1.Menace) && counter(0/0.1.Deathtouch) )!],newability[if type(creature[manacost=3]|mygraveyard)~morethan~0 then choice name(Return another creature with manacost 3) name(Return another creature with manacost 3) target(creature[manacost=3]|mygraveyard) moveto(mybattlefield) and!( counter(0/0.1.Menace) && counter(0/0.1.Deathtouch) )!],newability[choice name(Don't return another creature) donothing])) forever )!
auto=if type(creature[manacost=1]|mygraveyard)~morethan~0 then choice name(Return creature with manacost 1) name(Return creature with manacost 1) target(creature[manacost=1]|mygraveyard) moveto(mybattlefield) and!( transforms((,newability[counter(0/0.1.Menace)],newability[counter(0/0.1.Deathtouch)],newability[if type(creature[manacost=0]|mygraveyard)~morethan~0 then choice name(Return another creature with manacost 0) name(Return another creature with manacost 0) target(creature[manacost=0]|mygraveyard) moveto(mybattlefield) and!( counter(0/0.1.Menace) && counter(0/0.1.Deathtouch) )!],newability[if type(creature[manacost=1]|mygraveyard)~morethan~0 then choice name(Return another creature with manacost 1) name(Return another creature with manacost 1) target(creature[manacost=1]|mygraveyard) moveto(mybattlefield) and!( counter(0/0.1.Menace) && counter(0/0.1.Deathtouch) )!],newability[if type(creature[manacost=2]|mygraveyard)~morethan~0 then choice name(Return another creature with manacost 2) name(Return another creature with manacost 2) target(creature[manacost=2]|mygraveyard) moveto(mybattlefield) and!( counter(0/0.1.Menace) && counter(0/0.1.Deathtouch) )!],newability[choice name(Don't return another creature) donothing])) forever )!
auto=if type(creature[manacost=2]|mygraveyard)~morethan~0 then choice name(Return creature with manacost 2) name(Return creature with manacost 3) target(creature[manacost=2]|mygraveyard) moveto(mybattlefield) and!( transforms((,newability[counter(0/0.1.Menace)],newability[counter(0/0.1.Deathtouch)],newability[if type(creature[manacost=0]|mygraveyard)~morethan~0 then choice name(Return another creature with manacost 0) name(Return another creature with manacost 0) target(creature[manacost=0]|mygraveyard) moveto(mybattlefield) and!( counter(0/0.1.Menace) && counter(0/0.1.Deathtouch) )!],newability[if type(creature[manacost=1]|mygraveyard)~morethan~0 then choice name(Return another creature with manacost 1) name(Return another creature with manacost 1) target(creature[manacost=1]|mygraveyard) moveto(mybattlefield) and!( counter(0/0.1.Menace) && counter(0/0.1.Deathtouch) )!],newability[choice name(Don't return another creature) donothing])) forever )!
auto=if type(creature[manacost=3]|mygraveyard)~morethan~0 then choice name(Return creature with manacost 3) name(Return creature with manacost 3) target(creature[manacost=3]|mygraveyard) moveto(mybattlefield) and!( transforms((,newability[counter(0/0.1.Menace)],newability[counter(0/0.1.Deathtouch)])) forever )!
auto=choice name(Don't return any creature) donothing
text=Return up to two target creature cards with total mana value 3 or less from your graveyard to the battlefield. Put a deathtouch counter on either of them. Then put a menace counter on either of them. text=Return up to two target creature cards with total mana value 3 or less from your graveyard to the battlefield. Put a deathtouch counter on either of them. Then put a menace counter on either of them.
mana={2}{B} mana={2}{B}
type=Sorcery type=Sorcery
@@ -13273,7 +13275,7 @@ type=Enchantment
[/card] [/card]
[card] [card]
name=Call the Cavalry name=Call the Cavalry
auto=create(Knight:creature Knight:2/2:white:vigilance)*2 auto=name(Create knights) token(Knight,Creature Knight,2/2,white,vigilance)*2
text=Create two 2/2 white Knight creature tokens with vigilance. text=Create two 2/2 white Knight creature tokens with vigilance.
mana={3}{W} mana={3}{W}
type=Sorcery type=Sorcery
@@ -14920,7 +14922,7 @@ subtype=Saga
[card] [card]
name=Chainer, Nightmare Adept name=Chainer, Nightmare Adept
auto={D(*|myhand)}:name(Can play from graveyard) target(creature|mygraveyard) transforms((,newability[canplayfromgraveyard])) ueot limit:1 auto={D(*|myhand)}:name(Can play from graveyard) target(creature|mygraveyard) transforms((,newability[canplayfromgraveyard])) ueot limit:1
auto=@movedto(creature[-token]|myBattlefield):name(May gain haste) all(trigger[to]) transforms((,newability[ifnot casted(this) then transforms((,newability[haste])) uynt])) forever auto=@movedto(creature[-token]|mystack) from(mygraveyard,myexile,mycommandzone,mysideboard,mylibrary):name(Creature gains haste) transforms((,newability[@movedto(creature[-token]|mybattlefield) turnlimited:name(Creature gains haste) all(trigger[to]) name(Creature gains haste) transforms((,newability[haste])) uynt])) uynt
text=Discard a card: You may cast a creature card from your graveyard this turn. Activate this ability only once each turn. -- Whenever a nontoken creature enters the battlefield under your control, if you didn't cast it from your hand, it gains haste until your next turn. text=Discard a card: You may cast a creature card from your graveyard this turn. Activate this ability only once each turn. -- Whenever a nontoken creature enters the battlefield under your control, if you didn't cast it from your hand, it gains haste until your next turn.
mana={2}{B}{R} mana={2}{B}{R}
type=Legendary Creature type=Legendary Creature
@@ -15507,7 +15509,8 @@ toughness=6
[/card] [/card]
[card] [card]
name=Chaos Wand name=Chaos Wand
auto={4}{T}:Reveal:1 revealzone(opponentlibrary) revealuntil(*[instant;sorcery]|opponentlibrary) optionone choice name(Cast revelead instant or sorcery?) target(<upto:1>*[instant;sorcery]|reveal) moveto(ownerexile) and!( transforms((,newability[counter(0/0.1.ChaosExiledCast)])) forever )! optiononeend optiontwo choice name(put exile) target(<1>*|reveal) bottomoflibrary and!( all(*|reveal) moveto(ownerexile) and!( transforms((,newability[counter(0/0.1.ChaosExiled)])) forever )! )! optiontwoend afterrevealed all(*[counter{0/0.1.ChaosExiled}]|opponentexile) bottomoflibrary and!( name(Cast instant or sorcery) name(Cast instant or sorcery) target(*[counter{0/0.1.ChaosExiledCast}]|opponentexile) activate castcard(normal) )! afterrevealedend revealend aicode=activate transforms((,newability[all(*[zpos=oppofindfirsttypenonpermanent]|opponentlibrary) moveto(opponentexile) and!( activate castcard(normal) and!( all(*[zpos<=oppofindfirsttypenonpermanent]|opponentlibrary) moveto(opponentexile) and!( bottomoflibrary )! )! )!])) ueot
auto={4}{T}:name(Exile from opponent library) reveal:1 revealzone(opponentlibrary) revealuntil(*[instant;sorcery]|opponentlibrary) optionone name(Choose instant or sorcery) target(<upto:1>*[instant;sorcery]|reveal) moveto(opponentexile) and!( becomes(tobecha) ueot )! optiononeend optiontwo name(Put exile) target(*|reveal) moveto(ownerexile) and!( bottomoflibrary and!( all(*|reveal) moveto(ownerexile) and!( bottomoflibrary )! )! )! optiontwoend afterrevealed all(tobecha|opponentexile) activate castcard(normal) afterrevealedend revealend
text={4}, {T}: Target opponent exiles cards from the top of their library until they exile an instant or sorcery card. You may cast that card without paying its mana cost. Then put the exiled cards that weren't cast this way on the bottom of that library in a random order. text={4}, {T}: Target opponent exiles cards from the top of their library until they exile an instant or sorcery card. You may cast that card without paying its mana cost. Then put the exiled cards that weren't cast this way on the bottom of that library in a random order.
mana={3} mana={3}
type=Artifact type=Artifact
@@ -15844,8 +15847,8 @@ toughness=1
[card] [card]
name=Chevill, Bane of Monsters name=Chevill, Bane of Monsters
abilities=deathtouch abilities=deathtouch
auto=@each my upkeep restriction{type(*[counter{0/0.1.Bounty}]|opponentBattlefield)~morethan~0}:counter(0/0,1,Bounty) target(creature,planeswalker|opponentBattlefield) auto=@each my upkeep:if type(*[counter{0/0.1.Bounty}]|opponentBattlefield)~equalto~0 then name(Put bounty counter) name(Put bounty counter) target(*[creature;planeswalker]|opponentBattlefield) counter(0/0,1,Bounty)
auto=@movedto(graveyard) from(*[counter{0/0.1.Bounty}]|opponentbattlefield):life:3 controller && draw:1 controller auto=@movedto(graveyard) from(*[counter{0/0.1.Bounty}]|opponentbattlefield):name(Gain life and draw) life:3 controller && draw:1 controller
text=Deathtouch -- At the beginning of your upkeep, if your opponents control no permanents with bounty counters on them, put a bounty counter on target creature or planeswalker an opponent controls. -- Whenever a permanent an opponent controls with a bounty counter on it dies, you gain 3 life and draw a card. text=Deathtouch -- At the beginning of your upkeep, if your opponents control no permanents with bounty counters on them, put a bounty counter on target creature or planeswalker an opponent controls. -- Whenever a permanent an opponent controls with a bounty counter on it dies, you gain 3 life and draw a card.
mana={B}{G} mana={B}{G}
type=Legendary Creature type=Legendary Creature
@@ -15892,27 +15895,47 @@ toughness=5
[/card] [/card]
[card] [card]
name=Chill Haunting name=Chill Haunting
target=creature restriction=type(creature|battlefield)~morethan~0
auto=if type(creature|mygraveyard)~morethan~0 then choice name(Exile 1 creature) name(Exile 1 creature) -1/-1 ueot && target(creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~0 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 1) name(Target opponent creature and exile 1) name(Target opponent creature and exile 1 creature) target(creature|opponentbattlefield) transforms((,newability[-1/-1 ueot],newability[ability$!name(Exile 1 creature) target(creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~1 then choice name(Exile 2 creatures) name(Exile 2 creatures) -2/-2 ueot && target(<2>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~1 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 2) name(Target opponent creature and exile 2) name(Target opponent creature and exile 2) target(creature|opponentbattlefield) transforms((,newability[-2/-2 ueot],newability[ability$!name(Exile 2 creatures) target(<2>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~2 then choice name(Exile 3 creatures) name(Exile 3 creatures) -3/-3 ueot && target(<3>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~2 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 3) name(Target opponent creature and exile 3) name(Target opponent creature and exile 3) target(creature|opponentbattlefield) transforms((,newability[-3/-3 ueot],newability[ability$!name(Exile 3 creatures) target(<3>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~3 then choice name(Exile 4 creatures) name(Exile 4 creatures) -4/-4 ueot && target(<4>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~3 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 4) name(Target opponent creature and exile 4) name(Target opponent creature and exile 4) target(creature|opponentbattlefield) transforms((,newability[-4/-4 ueot],newability[ability$!name(Exile 4 creatures) target(<4>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~4 then choice name(Exile 5 creatures) name(Exile 5 creatures) -5/-5 ueot && target(<5>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~4 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 5) name(Target opponent creature and exile 5) name(Target opponent creature and exile 5) target(creature|opponentbattlefield) transforms((,newability[-5/-5 ueot],newability[ability$!name(Exile 5 creatures) target(<5>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~5 then choice name(Exile 6 creatures) name(Exile 6 creatures) -6/-6 ueot && target(<6>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~5 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 6) name(Target opponent creature and exile 6) name(Target opponent creature and exile 6) target(creature|opponentbattlefield) transforms((,newability[-6/-6 ueot],newability[ability$!name(Exile 6 creatures) target(<6>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~6 then choice name(Exile 7 creatures) name(Exile 7 creatures) -7/-7 ueot && target(<7>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~6 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 7) name(Target opponent creature and exile 7) name(Target opponent creature and exile 7) target(creature|opponentbattlefield) transforms((,newability[-7/-7 ueot],newability[ability$!name(Exile 7 creatures) target(<7>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~7 then choice name(Exile 8 creatures) name(Exile 8 creatures) -8/-8 ueot && target(<8>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~7 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 8) name(Target opponent creature and exile 8) name(Target opponent creature and exile 8) target(creature|opponentbattlefield) transforms((,newability[-8/-8 ueot],newability[ability$!name(Exile 8 creatures) target(<8>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~8 then choice name(Exile 9 creatures) name(Exile 9 creatures) -9/-9 ueot && target(<9>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~8 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 9) name(Target opponent creature and exile 9) name(Target opponent creature and exile 9) target(creature|opponentbattlefield) transforms((,newability[-9/-9 ueot],newability[ability$!name(Exile 9 creatures) target(<9>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~9 then choice name(Exile 10 creatures) name(Exile 10 creatures) -10/-10 ueot && target(<10>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~9 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 10) name(Target opponent creature and exile 10) name(Target opponent creature and exile 10) target(creature|opponentbattlefield) transforms((,newability[-10/-10 ueot],newability[ability$!name(Exile 10 creatures) target(<10>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~10 then choice name(Exile 11 creatures) name(Exile 11 creatures) -11/-11 ueot && target(<11>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~10 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 11) name(Target opponent creature and exile 11) name(Target opponent creature and exile 11) target(creature|opponentbattlefield) transforms((,newability[-11/-11 ueot],newability[ability$!name(Exile 11 creatures) target(<11>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~11 then choice name(Exile 12 creatures) name(Exile 12 creatures) -12/-12 ueot && target(<12>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~11 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 12) name(Target opponent creature and exile 12) name(Target opponent creature and exile 12) target(creature|opponentbattlefield) transforms((,newability[-12/-12 ueot],newability[ability$!name(Exile 12 creatures) target(<12>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~12 then choice name(Exile 13 creatures) name(Exile 13 creatures) -13/-13 ueot && target(<13>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~12 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 13) name(Target opponent creature and exile 13) name(Target opponent creature and exile 13) target(creature|opponentbattlefield) transforms((,newability[-13/-13 ueot],newability[ability$!name(Exile 13 creatures) target(<13>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~13 then choice name(Exile 14 creatures) name(Exile 14 creatures) -14/-14 ueot && target(<14>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~13 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 14) name(Target opponent creature and exile 14) name(Target opponent creature and exile 14) target(creature|opponentbattlefield) transforms((,newability[-14/-14 ueot],newability[ability$!name(Exile 14 creatures) target(<14>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~14 then choice name(Exile 15 creatures) name(Exile 15 creatures) -15/-15 ueot && target(<15>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~14 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 15) name(Target opponent creature and exile 15) name(Target opponent creature and exile 15) target(creature|opponentbattlefield) transforms((,newability[-15/-15 ueot],newability[ability$!name(Exile 15 creatures) target(<15>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~15 then choice name(Exile 16 creatures) name(Exile 16 creatures) -16/-16 ueot && target(<16>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~15 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 16) name(Target opponent creature and exile 16) name(Target opponent creature and exile 16) target(creature|opponentbattlefield) transforms((,newability[-16/-16 ueot],newability[ability$!name(Exile 16 creatures) target(<16>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~16 then choice name(Exile 17 creatures) name(Exile 17 creatures) -17/-17 ueot && target(<17>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~16 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 17) name(Target opponent creature and exile 17) name(Target opponent creature and exile 17) target(creature|opponentbattlefield) transforms((,newability[-17/-17 ueot],newability[ability$!name(Exile 17 creatures) target(<17>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~17 then choice name(Exile 18 creatures) name(Exile 18 creatures) -18/-18 ueot && target(<18>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~17 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 18) name(Target opponent creature and exile 18) name(Target opponent creature and exile 18) target(creature|opponentbattlefield) transforms((,newability[-18/-18 ueot],newability[ability$!name(Exile 18 creatures) target(<18>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~18 then choice name(Exile 19 creatures) name(Exile 19 creatures) -19/-19 ueot && target(<19>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~18 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 19) name(Target opponent creature and exile 19) name(Target opponent creature and exile 19) target(creature|opponentbattlefield) transforms((,newability[-19/-19 ueot],newability[ability$!name(Exile 19 creatures) target(<19>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~19 then choice name(Exile 20 creatures) name(Exile 20 creatures) -20/-20 ueot && target(<20>creature|mygraveyard) moveTo(exile) auto=if type(creature|mygraveyard)~morethan~19 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Target opponent creature and exile 20) name(Target opponent creature and exile 20) name(Target opponent creature and exile 20) target(creature|opponentbattlefield) transforms((,newability[-20/-20 ueot],newability[ability$!name(Exile 20 creatures) target(<20>creature|mygraveyard) moveto(myexile)!$ opponent])) ueot
auto=if type(creature|mygraveyard)~morethan~0 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 1) name(Target your creature and exile 1) name(Target your creature and exile 1 creature) target(creature|mybattlefield) transforms((,newability[-1/-1 ueot],newability[ability$!name(Exile 1 creature) target(creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~1 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 2) name(Target your creature and exile 2) name(Target your creature and exile 2) target(creature|mybattlefield) transforms((,newability[-2/-2 ueot],newability[ability$!name(Exile 2 creatures) target(<2>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~2 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 3) name(Target your creature and exile 3) name(Target your creature and exile 3) target(creature|mybattlefield) transforms((,newability[-3/-3 ueot],newability[ability$!name(Exile 3 creatures) target(<3>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~3 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 4) name(Target your creature and exile 4) name(Target your creature and exile 4) target(creature|mybattlefield) transforms((,newability[-4/-4 ueot],newability[ability$!name(Exile 4 creatures) target(<4>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~4 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 5) name(Target your creature and exile 5) name(Target your creature and exile 5) target(creature|mybattlefield) transforms((,newability[-5/-5 ueot],newability[ability$!name(Exile 5 creatures) target(<5>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~5 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 6) name(Target your creature and exile 6) name(Target your creature and exile 6) target(creature|mybattlefield) transforms((,newability[-6/-6 ueot],newability[ability$!name(Exile 6 creatures) target(<6>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~6 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 7) name(Target your creature and exile 7) name(Target your creature and exile 7) target(creature|mybattlefield) transforms((,newability[-7/-7 ueot],newability[ability$!name(Exile 7 creatures) target(<7>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~7 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 8) name(Target your creature and exile 8) name(Target your creature and exile 8) target(creature|mybattlefield) transforms((,newability[-8/-8 ueot],newability[ability$!name(Exile 8 creatures) target(<8>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~8 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 9) name(Target your creature and exile 9) name(Target your creature and exile 9) target(creature|mybattlefield) transforms((,newability[-9/-9 ueot],newability[ability$!name(Exile 9 creatures) target(<9>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~9 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 10) name(Target your creature and exile 10) name(Target your creature and exile 10) target(creature|mybattlefield) transforms((,newability[-10/-10 ueot],newability[ability$!name(Exile 10 creatures) target(<10>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~10 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 11) name(Target your creature and exile 11) name(Target your creature and exile 11) target(creature|mybattlefield) transforms((,newability[-11/-11 ueot],newability[ability$!name(Exile 11 creatures) target(<11>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~11 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 12) name(Target your creature and exile 12) name(Target your creature and exile 12) target(creature|mybattlefield) transforms((,newability[-12/-12 ueot],newability[ability$!name(Exile 12 creatures) target(<12>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~12 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 13) name(Target your creature and exile 13) name(Target your creature and exile 13) target(creature|mybattlefield) transforms((,newability[-13/-13 ueot],newability[ability$!name(Exile 13 creatures) target(<13>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~13 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 14) name(Target your creature and exile 14) name(Target your creature and exile 14) target(creature|mybattlefield) transforms((,newability[-14/-14 ueot],newability[ability$!name(Exile 14 creatures) target(<14>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~14 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 15) name(Target your creature and exile 15) name(Target your creature and exile 15) target(creature|mybattlefield) transforms((,newability[-15/-15 ueot],newability[ability$!name(Exile 15 creatures) target(<15>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~15 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 16) name(Target your creature and exile 16) name(Target your creature and exile 16) target(creature|mybattlefield) transforms((,newability[-16/-16 ueot],newability[ability$!name(Exile 16 creatures) target(<16>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~16 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 17) name(Target your creature and exile 17) name(Target your creature and exile 17) target(creature|mybattlefield) transforms((,newability[-17/-17 ueot],newability[ability$!name(Exile 17 creatures) target(<17>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~17 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 18) name(Target your creature and exile 18) name(Target your creature and exile 18) target(creature|mybattlefield) transforms((,newability[-18/-18 ueot],newability[ability$!name(Exile 18 creatures) target(<18>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~18 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 19) name(Target your creature and exile 19) name(Target your creature and exile 19) target(creature|mybattlefield) transforms((,newability[-19/-19 ueot],newability[ability$!name(Exile 19 creatures) target(<19>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
auto=if type(creature|mygraveyard)~morethan~19 then if type(creature|mybattlefield)~morethan~0 then choice name(Target your creature and exile 20) name(Target your creature and exile 20) name(Target your creature and exile 20) target(creature|mybattlefield) transforms((,newability[-20/-20 ueot],newability[ability$!name(Exile 20 creatures) target(<20>creature|mygraveyard) moveto(myexile)!$ controller])) ueot
text=As an additional cost to cast Chill Haunting, exile X creature cards from your graveyard. -- Target creature gets -X/-X until end of turn. text=As an additional cost to cast Chill Haunting, exile X creature cards from your graveyard. -- Target creature gets -X/-X until end of turn.
mana={1}{B} mana={1}{B}
type=Instant type=Instant
@@ -15988,8 +16011,7 @@ toughness=3
[card] [card]
name=Chisei, Heart of Oceans name=Chisei, Heart of Oceans
abilities=flying abilities=flying
auto=@each my upkeep:choice name(Don't remove any counter and sacrifice) sacrifice auto=@each my upkeep:transforms((,newability[if type(*[counter{any}]|myBattlefield)~morethan~0 then choice name(Remove a counter) name(Remove a counter) removesinglecountertype(1) target(*[counter{any}]|myBattlefield)],newability[choice name(Don't remove any counter and sacrifice) sacrifice])) oneshot
auto=@each my upkeep restriction{type(*[counter{any}]|myBattlefield)~morethan~0}:choice name(Remove a counter) removesinglecountertype(1) target(*[counter{any}]|myBattlefield)
text=Flying -- At the beginning of your upkeep, sacrifice Chisei, Heart of Oceans unless you remove a counter from a permanent you control. text=Flying -- At the beginning of your upkeep, sacrifice Chisei, Heart of Oceans unless you remove a counter from a permanent you control.
mana={2}{U}{U} mana={2}{U}{U}
type=Legendary Creature type=Legendary Creature
@@ -17475,8 +17497,8 @@ type=Instant
[/card] [/card]
[card] [card]
name=Collected Conjuring name=Collected Conjuring
aicode=activate target(<upto:2>sorcery[manacost<=3;zpos<=6]|mylibrary) moveto(mybattlefield) aicode=activate transforms((,newability[if type(sorcery[manacost<=3&zpos<=6]|mylibrary)~equalto~0 then all(*[zpos<=6]|mylibrary) moveto(myexile) and!( bottomoflibrary )!],newability[if type(sorcery[manacost<=3&zpos<=6]|mylibrary)~morethan~0 then target(<upto:2>sorcery[manacost<=3&zpos<=6]|mylibrary) moveto(myexile) and!( activate castcard(normal) and!( all(*[zpos<=6]|mylibrary) moveto(myexile) and!( bottomoflibrary )! )! )!])) oneshot
auto=name(Look) reveal:6 optionone name(Get 2 sorcery) target(<upto:2>sorcery[manacost<=3]|reveal) moveto(mybattlefield) optiononeend optiontwo name(put on bottom) target(<6>*|reveal) bottomoflibrary optiontwoend revealend auto=name(Exile top 6 cards) reveal:6 optionone name(Get 2 sorcery) target(<upto:2>sorcery[manacost<=3]|reveal) moveto(myexile) and!( becomes(tobecol) ueot )! optiononeend optiontwo name(Put on bottom) target(*|reveal) moveto(myexile) and!( bottomoflibrary and!( all(*|reveal) moveto(myexile) and!( bottomoflibrary )! )! )! optiontwoend afterrevealedend all(tobecol|myexile) activate castcard(normal) afterrevealedend revealend
text=Exile the top six cards of your library. You may cast up to two sorcery cards with mana value 3 or less from among them without paying their mana costs. Put the exiled cards not cast this way on the bottom of your library in a random order. text=Exile the top six cards of your library. You may cast up to two sorcery cards with mana value 3 or less from among them without paying their mana costs. Put the exiled cards not cast this way on the bottom of your library in a random order.
mana={2}{U}{R} mana={2}{U}{R}
type=Sorcery type=Sorcery
@@ -18845,7 +18867,7 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Corpse Augur name=Corpse Augur
auto=_DIES_foreach(creature|mygraveyard) draw:1 controller && foreach(creature|mygraveyard) life:-1 controller auto=_DIES_name(Choose a player) transforms((,newability[choice name(Target opponent) draw:type:creature:opponentgraveyard controller && life:-type:creature:opponentgraveyard controller],newability[choice name(Target controller) draw:type:creature:mygraveyard controller && life:-type:creature:mygraveyard controller])) ueot
text=When Corpse Augur dies, you draw X cards and you lose X life, where X is the number of creature cards in target player's graveyard. text=When Corpse Augur dies, you draw X cards and you lose X life, where X is the number of creature cards in target player's graveyard.
mana={3}{B} mana={3}{B}
type=Creature type=Creature
@@ -18996,9 +19018,13 @@ toughness=1
[/card] [/card]
[card] [card]
name=Cosima, God of the Voyage name=Cosima, God of the Voyage
auto=@each my upkeep:may name(Exile Cosima) moveto(myexile) and!( counter(0/0,1,CosimaEffect) )! other={1}{U} name(The Omenkeel)
autoexile=@movedto(land|mybattlefield) restriction{compare(hascntcosimaeffect)~morethan~0}:transforms((,newability[choice name(Add voyage counter) counter(0/0.1.Voyage)],newability[choice name(Return in play) draw:hascntvoyage controller && moveTo(mybattlefield) and!( counter(1/1.hascntvoyage) )!])) oneshot otherrestriction=can play artifact,compare(isflipped)~equalto~1
text=At the beginning of your upkeep, you may exile Cosima. If you do, it gains "Whenever a land enters the battlefield under your control, if Cosima is exiled, you may put a voyage counter on it. If you don't, return Cosima to the battlefield with X +1/+1 counters on it and draw X cards, where X is the number of voyage counters on it." restriction=compare(isflipped)~equalto~0
anyzone={0}:doubleside(The Omenkeel)
autostack=if paid(alternative) then flip(The Omenkeel) forcetype(Legendary Artifact)
auto=@each my upkeep restriction{compare(isflipped)~equalto~0}:may name(Exile Cosima) moveto(myexile) and!( transforms((,newability[@movedto(land|mybattlefield):name(Choose one) transforms((,newability[choice name(Add voyage counter) counter(0/0.1.Voyage)],newability[choice name(Return in play) draw:hascntvoyage controller && moveTo(mybattlefield) and!( counter(1/1.hascntvoyage) )!])) oneshot])) forever )!
text=At the beginning of your upkeep, you may exile Cosima. If you do, it gains "Whenever a land enters the battlefield under your control, if Cosima is exiled, you may put a voyage counter on it. If you don't, return Cosima to the battlefield with X +1/+1 counters on it and draw X cards, where X is the number of voyage counters on it." // {1}{U} The Omenkeel
mana={2}{U} mana={2}{U}
type=Legendary Creature type=Legendary Creature
subtype=God subtype=God
@@ -20232,7 +20258,7 @@ auto=this(counter{0/0.1.Menace}>=1) menace
auto=this(counter{0/0.1.Reach}>=1) reach auto=this(counter{0/0.1.Reach}>=1) reach
auto=this(counter{0/0.1.Trample}>=1) trample auto=this(counter{0/0.1.Trample}>=1) trample
auto=this(counter{0/0.1.Vigilance}>=1) vigilance auto=this(counter{0/0.1.Vigilance}>=1) vigilance
auto=@each my combatbegins:ability$!choice counter(1/1) target(Crystalline Giant[-counter{1/1.1}]|myBattlefield) _ choice counter(0/0,1,Vigilance) target(Crystalline Giant[-counter{0/0.1.Vigilance}]|myBattlefield) _ choice counter(0/0,1,Trample) target(Crystalline Giant[-counter{0/0.1.Trample}]|myBattlefield) _ choice counter(0/0,1,Reach) target(Crystalline Giant[-counter{0/0.1.Reach}]|myBattlefield) _ choice counter(0/0,1,Menace) target(Crystalline Giant[-counter{0/0.1.Menace}]|myBattlefield) _ choice counter(0/0,1,Lifelink) target(Crystalline Giant[-counter{0/0.1.Lifelink}]|myBattlefield) _ choice counter(0/0,1,Hexproof) target(Crystalline Giant[-counter{0/0.1.Hexproof}]|myBattlefield) _ choice counter(0/0,1,Deathtouch) target(Crystalline Giant[-counter{0/0.1.Deathtouch}]|myBattlefield) _ choice counter(0/0,1,Flying) target(Crystalline Giant[-counter{0/0.1.Flying}]|myBattlefield) _ choice counter(0/0,1,First Strike) target(Crystalline Giant[-counter{0/0.1.First Strike}]|myBattlefield) !$ controller auto=@each my combatbegins:name(Choose a counter) transforms((,newability[if compare(hascnt11)~equalto~0 then choice name(Put 1/1 counter) name(Put 1/1 counter) counter(1/1)],newability[if compare(hascntflying)~equalto~0 then choice name(Put flying counter) name(Put flying counter) counter(0/0.1.Flying)],newability[if compare(hascntfirststrike)~equalto~0 then choice name(Put first strike counter) name(Put first strike counter) counter(0/0.1.FirstStrike)],newability[if compare(hascntdeathtouch)~equalto~0 then choice name(Put deathtouch counter) name(Put deathtouch counter) counter(0/0.1.Deathtouch)],newability[if compare(hascnthexproof)~equalto~0 then choice name(Put hexproof counter) name(Put hexproof counter) counter(0/0.1.Hexproof)],newability[if compare(hascntlifelink)~equalto~0 then choice name(Put lifelink counter) name(Put lifelink counter) counter(0/0.1.Lifelink)],newability[if compare(hascntmenace)~equalto~0 then choice name(Put menace counter) name(Put menace counter) counter(0/0.1.Menace)],newability[if compare(hascntreach)~equalto~0 then choice name(Put reach counter) name(Put reach counter) counter(0/0.1.Reach)],newability[if compare(hascnttrample)~equalto~0 then choice name(Put trample counter) name(Put trample counter) counter(0/0.1.Trample)],newability[if compare(hascntvigilance)~equalto~0 then choice name(Put vigilance counter) name(Put vigilance counter) counter(0/0.1.Vigilance)])) forever
text=At the beginning of combat on your turn, choose a kind of counter at random that Crystalline Giant doesn't have on it from among flying, first strike, deathtouch, hexproof, lifelink, menace, reach, trample, vigilance, and +1/+1. Put a counter of that kind on Crystalline Giant. text=At the beginning of combat on your turn, choose a kind of counter at random that Crystalline Giant doesn't have on it from among flying, first strike, deathtouch, hexproof, lifelink, menace, reach, trample, vigilance, and +1/+1. Put a counter of that kind on Crystalline Giant.
mana={3} mana={3}
type=Artifact Creature type=Artifact Creature
@@ -20495,8 +20521,8 @@ toughness=3
[/card] [/card]
[card] [card]
name=Curse of Bloodletting name=Curse of Bloodletting
target=opponent target=player
auto=@damaged(targetedplayer) from(*[-Curse of Bloodletting]|*):damage:thatmuch opponent auto=@damaged(targetedplayer) from(*[-Curse of Bloodletting]|*):damage:thatmuch targetedplayer
text=Enchant player -- If a source would deal damage to enchanted player, it deals double that damage to that player instead. text=Enchant player -- If a source would deal damage to enchanted player, it deals double that damage to that player instead.
mana={3}{R}{R} mana={3}{R}{R}
type=Enchantment type=Enchantment
@@ -20504,8 +20530,9 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Bounty name=Curse of Bounty
target=opponent target=player
auto=@combat(attacking) source(creature|mybattlefield) turnlimited:name(Untap all non-land permanents) untap all(*[-land]|myBattlefield) auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@combat(attacking) source(creature|mybattlefield) turnlimited:name(Untap all non-land permanents) untap all(*[-land]|myBattlefield)])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@combat(attacking) source(creature|opponentbattlefield) turnlimited:name(Untap all non-land permanents) untap all(*[-land]|myBattlefield)],newability[@combat(attacking) source(creature|opponentbattlefield) turnlimited:name(Untap all non-land permanents) untap all(*[-land]|opponentbattlefield)])) forever
text=Enchant player -- Whenever enchanted player is attacked, untap all nonland permanents you control. Each opponent attacking that player untaps all nonland permanents they control. text=Enchant player -- Whenever enchanted player is attacked, untap all nonland permanents you control. Each opponent attacking that player untaps all nonland permanents they control.
mana={1}{G} mana={1}{G}
type=Enchantment type=Enchantment
@@ -20513,8 +20540,9 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Chaos name=Curse of Chaos
target=opponent target=player
auto=@combat(attacking) source(creature|mybattlefield) turnlimited:may name(Discard and draw) target(*|myhand) reject and!( draw:1 )! auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@combat(attacking) source(creature|mybattlefield) turnlimited:may name(Discard and draw) target(*|myhand) reject and!( draw:1 )!])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@combat(attacking) source(creature|opponentbattlefield) turnlimited:ability$!may name(Discard and draw) target(*|myhand) reject and!( draw:1 )!!$ opponent])) forever
text=Enchant player -- Whenever a player attacks enchanted player with one or more creatures, that attacking player may discard a card. If the player does, he or she draws a card. text=Enchant player -- Whenever a player attacks enchanted player with one or more creatures, that attacking player may discard a card. If the player does, he or she draws a card.
mana={2}{R} mana={2}{R}
type=Enchantment type=Enchantment
@@ -20540,8 +20568,9 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Disturbance name=Curse of Disturbance
target=opponent target=player
auto=@combat(attacking) source(creature|mybattlefield) turnlimited:name(Create Zombie) _ZOMBIETOKEN_ auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@combat(attacking) source(creature|mybattlefield) turnlimited:name(Create Zombie) _ZOMBIETOKEN_])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@combat(attacking) source(creature|opponentbattlefield) turnlimited:name(Create Zombie) _ZOMBIETOKEN_],newability[@combat(attacking) source(creature|opponentbattlefield) turnlimited:name(Create Zombie) _ZOMBIETOKEN_ opponent])) forever
text=Enchant player -- Whenever enchanted player is attacked, create a 2/2 black Zombie creature token. Each opponent attacking that player does the same. text=Enchant player -- Whenever enchanted player is attacked, create a 2/2 black Zombie creature token. Each opponent attacking that player does the same.
mana={2}{B} mana={2}{B}
type=Enchantment type=Enchantment
@@ -20549,8 +20578,9 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Echoes name=Curse of Echoes
target=opponent target=player
auto=@movedto(*[instant;sorcery]|targetedpersonsstack):may name(Copy casted spell) all(trigger[to]) activate castcard(copied) auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@movedto(*[instant;sorcery]|opponentstack):may name(Copy casted spell) all(trigger[to]) activate castcard(copied)])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@movedto(*[instant;sorcery]|mystack):name(Copy casted spell) ability$!may name(Copy casted spell) target(*[instant;sorcery]|opponentstack) activate castcard(copied)!$ opponent])) forever
text=Enchant player -- Whenever enchanted player casts an instant or sorcery spell, each other player may copy that spell and may choose new targets for the copy he or she controls. text=Enchant player -- Whenever enchanted player casts an instant or sorcery spell, each other player may copy that spell and may choose new targets for the copy he or she controls.
mana={4}{U} mana={4}{U}
type=Enchantment type=Enchantment
@@ -20558,10 +20588,11 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Fool's Wisdom name=Curse of Fool's Wisdom
target=player
abilities=madness abilities=madness
target=opponent
auto=@drawn(targetedplayer):name(Lose life) life:-2 opponent && life:2 controller
autoexile=restriction{discarded} pay({3}{B}) name(pay 3B to cast) activate name(pay 3B to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard) autoexile=restriction{discarded} pay({3}{B}) name(pay 3B to cast) activate name(pay 3B to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@drawn(targetedplayer):name(Lose life) life:-2 opponent && life:2 controller])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@drawn(targetedplayer):name(Lose life) life:-2 controller && life:2 controller])) forever
text=Enchant player -- Whenever enchanted player draws a card, they lose 2 life and you gain 2 life. -- Madness {3}{B} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.) text=Enchant player -- Whenever enchanted player draws a card, they lose 2 life and you gain 2 life. -- Madness {3}{B} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.)
mana={4}{B}{B} mana={4}{B}{B}
type=Enchantment type=Enchantment
@@ -20569,9 +20600,11 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Hospitality name=Curse of Hospitality
target=opponent target=player
auto=lord(creature|mybattlefield) trample auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[lord(creature[attacking]|mybattlefield) trample])) forever
auto=@combatdamagefoeof(player) from(creature|mybattlefield):name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[endofturn once checkex] moveto(ownerexile)])) ueot )! auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@combatdamagefoeof(player) from(creature|mybattlefield):name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile ueot],newability[anytypeofmana ueot],newability[phaseaction[endofturn once checkex] moveto(ownerexile)])) ueot )!])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[lord(creature[attacking]|opponentbattlefield) trample])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@combatdamageof(player) from(creature|opponentbattlefield):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(opponentexile) and!( transforms((,newability[canplayfromexile ueot],newability[anytypeofmana ueot],newability[phaseaction[opponent upkeep once checkex] moveto(ownerexile)])) ueot )!])) forever
text=Enchant player -- Creatures attacking enchanted player have trample. -- Whenever a creature deals combat damage to enchanted player, that player exiles the top card of their library. Until end of turn, that creature's controller may play that card and they may spend mana as though it were mana of any color to cast that spell. text=Enchant player -- Creatures attacking enchanted player have trample. -- Whenever a creature deals combat damage to enchanted player, that player exiles the top card of their library. Until end of turn, that creature's controller may play that card and they may spend mana as though it were mana of any color to cast that spell.
mana={2}{R} mana={2}{R}
type=Enchantment type=Enchantment
@@ -20579,8 +20612,9 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Inertia name=Curse of Inertia
target=opponent target=player
auto=@combat(attacking) source(creature|mybattlefield) turnlimited:may name(Tap or untap permanent) transforms((,newability[choice name(Tap a permanent) target(*|battlefield) tap],newability[choice name(Untap a permanent) target(*|battlefield) untap])) oneshot auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@combat(attacking) source(creature|mybattlefield) turnlimited:may name(Tap or untap permanent) transforms((,newability[choice name(Tap a permanent) target(*[-tapped]|battlefield) tap],newability[choice name(Untap a permanent) target(*[tapped]|battlefield) untap])) oneshot])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@combat(attacking) source(creature|opponentbattlefield) turnlimited:name(Tap or untap permanent) ability$!may name(Tap or untap permanent) transforms((,newability[choice name(Tap a permanent) target(*[-tapped]|battlefield) tap],newability[choice name(Untap a permanent) target(*[tapped]|battlefield) untap])) oneshot!$ opponent])) forever
text=Enchant player -- Whenever a player attacks enchanted player with one or more creatures, that attacking player may tap or untap target permanent of his or her choice. text=Enchant player -- Whenever a player attacks enchanted player with one or more creatures, that attacking player may tap or untap target permanent of his or her choice.
mana={2}{U} mana={2}{U}
type=Enchantment type=Enchantment
@@ -20602,7 +20636,7 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Misfortunes name=Curse of Misfortunes
target=opponent target=player
auto=@each my upkeep:may name(Search curse) target(curse[-Curse of Misfortunes]|mylibrary) transforms((,newability[if type(curse[share!name!]|myBattlefield)~equalto~0 then moveto(myBattlefield) and!( shuffle )!])) oneshot auto=@each my upkeep:may name(Search curse) target(curse[-Curse of Misfortunes]|mylibrary) transforms((,newability[if type(curse[share!name!]|myBattlefield)~equalto~0 then moveto(myBattlefield) and!( shuffle )!])) oneshot
text=Enchant player -- At the beginning of your upkeep, you may search your library for a Curse card that doesn't have the same name as a Curse attached to enchanted player, put it onto the battlefield attached to that player, then shuffle your library. text=Enchant player -- At the beginning of your upkeep, you may search your library for a Curse card that doesn't have the same name as a Curse attached to enchanted player, put it onto the battlefield attached to that player, then shuffle your library.
mana={4}{B} mana={4}{B}
@@ -20622,7 +20656,8 @@ subtype=Aura Curse
[card] [card]
name=Curse of Opulence name=Curse of Opulence
target=player target=player
auto=@combat(attacking) source(creature|myBattlefield) turnlimited:name(Create Gold) token(Gold) auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@combat(attacking) source(creature|myBattlefield) turnlimited:name(Create Gold) name(Create Gold) token(Gold)])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@combat(attacking) source(creature|opponentBattlefield) turnlimited:name(Create Gold) name(Create Gold) token(Gold)])) forever
text=Enchant player -- Whenever enchanted player is attacked, create a colorless artifact token named Gold. It has "Sacrifice this artifact: Add one mana of any color.". Each opponent attacking that player does the same. text=Enchant player -- Whenever enchanted player is attacked, create a colorless artifact token named Gold. It has "Sacrifice this artifact: Add one mana of any color.". Each opponent attacking that player does the same.
mana={R} mana={R}
type=Enchantment type=Enchantment
@@ -20630,8 +20665,9 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Predation name=Curse of Predation
target=opponent target=player
auto=@combat(attacking) source(creature|myBattlefield):name(Put 1/1 counter) all(trigger[to]) counter(1/1) auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@combat(attacking) source(creature|myBattlefield):name(Put 1/1 counter) all(trigger[to]) name(Put 1/1 counter) counter(1/1)])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@combat(attacking) source(creature|opponentBattlefield):name(Put 1/1 counter) all(trigger[to]) name(Put 1/1 counter) counter(1/1)])) forever
text=Enchant player -- Whenever a creature attacks enchanted player, put a +1/+1 counter on it. text=Enchant player -- Whenever a creature attacks enchanted player, put a +1/+1 counter on it.
mana={2}{G} mana={2}{G}
type=Enchantment type=Enchantment
@@ -20640,7 +20676,8 @@ subtype=Aura Curse
[card] [card]
name=Curse of Shaken Faith name=Curse of Shaken Faith
target=player target=player
auto=@movedto(*|targetedpersonsstack) restriction{thisturn(*|targetedpersonsstack)~morethan~0}:damage:2 targetedplayer auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@movedto(*|opponentstack) restriction{thisturn(*|opponentstack)~morethan~0}:damage:2 opponent])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@movedto(*|mystack) restriction{thisturn(*|mystack)~morethan~0}:damage:2 controller])) forever
text=Enchant player -- Whenever enchanted player casts a spell other than the first spell they cast each turn or copies a spell, Curse of Shaken Faith deals 2 damage to them. text=Enchant player -- Whenever enchanted player casts a spell other than the first spell they cast each turn or copies a spell, Curse of Shaken Faith deals 2 damage to them.
mana={1}{R} mana={1}{R}
type=Enchantment type=Enchantment
@@ -20648,8 +20685,9 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Shallow Graves name=Curse of Shallow Graves
target=opponent target=player
auto=@combat(attacking) source(creature|mybattlefield) turnlimited:may name(Create Zombie) _ZOMBIETOKEN_ and!( tap(noevent) )! auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@combat(attacking) source(creature|mybattlefield) turnlimited:may name(Create Zombie) _ZOMBIETOKEN_ and!( tap(noevent) )!])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@combat(attacking) source(creature|opponentBattlefield) turnlimited:ability$!may name(Create Zombie) _ZOMBIETOKEN_ and!( moveto(mybattlefield) and!( tap(noevent) )! )!!$ opponent])) forever
text=Enchant player -- Whenever a player attacks enchanted player with one or more creatures, that attacking player may put a 2/2 black Zombie creature token onto the battlefield tapped. text=Enchant player -- Whenever a player attacks enchanted player with one or more creatures, that attacking player may put a 2/2 black Zombie creature token onto the battlefield tapped.
mana={2}{B} mana={2}{B}
type=Enchantment type=Enchantment
@@ -20657,8 +20695,9 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Silence name=Curse of Silence
target=opponent target=player
auto=chooseanameopp transforms((,newability[lord(*[chosenname]|opponentcastingzone) changecost(colorless:+2)],newability[@movedTo(*[chosenname]|opponentstack):may name(Sacrifice and draw) sacrifice and!( draw:1 controller )!])) forever chooseend nonland auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[chooseanameopp transforms((,newability[lord(*[chosenname]|opponentcastingzone) changecost(colorless:+2)],newability[@movedTo(*[chosenname]|opponentstack):may name(Sacrifice and draw) sacrifice and!( draw:1 controller )!])) forever chooseend nonland])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) chooseaname transforms((,newability[lord(*[chosenname]|mycastingzone) changecost(colorless:+2)],newability[@movedTo(*[chosenname]|mystack):may name(Sacrifice and draw) sacrifice and!( draw:1 controller )!])) forever chooseend nonland
text=Enchant player -- As Curse of Silence enters the battlefield, choose a card name. -- Spells with the chosen name enchanted player casts cost {2} more to cast. -- Whenever enchanted player casts a spell with the chosen name, you may sacrifice Curse of Silence. If you do, draw a card. text=Enchant player -- As Curse of Silence enters the battlefield, choose a card name. -- Spells with the chosen name enchanted player casts cost {2} more to cast. -- Whenever enchanted player casts a spell with the chosen name, you may sacrifice Curse of Silence. If you do, draw a card.
mana={W} mana={W}
type=Enchantment type=Enchantment
@@ -20666,8 +20705,9 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Surveillance name=Curse of Surveillance
target=opponent target=player
auto=@each opponent upkeep:draw:type:enchantment[curse]:mybattlefield controller auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@each opponent upkeep:name(Draw a card for each curse) draw:targetedcurses controller])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@each my upkeep:name(Draw a card for each curse) draw:targetedcurses opponent])) forever
text=Enchant player -- At the beginning of enchanted player's upkeep, any number of target players other than that player each draw cards equal to the number of Curses attached to that player. text=Enchant player -- At the beginning of enchanted player's upkeep, any number of target players other than that player each draw cards equal to the number of Curses attached to that player.
mana={4}{U} mana={4}{U}
type=Enchantment type=Enchantment
@@ -20685,8 +20725,8 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Vengeance name=Curse of Vengeance
target=opponent target=player
auto=@movedto(*[instant;sorcery]|targetedpersonsstack):name(Put spite counter) counter(0/0,1,Spite) auto=@movedto(*|targetedpersonsstack):name(Put spite counter) counter(0/0,1,Spite)
text=Enchant player -- Whenever enchanted player casts a spell, put a spite counter on Curse of Vengeance. -- When enchanted player loses the game, you gain X life and draw X cards, where X is the number of spite counters on Curse of Vengeance. text=Enchant player -- Whenever enchanted player casts a spell, put a spite counter on Curse of Vengeance. -- When enchanted player loses the game, you gain X life and draw X cards, where X is the number of spite counters on Curse of Vengeance.
mana={B} mana={B}
type=Enchantment type=Enchantment
@@ -20694,8 +20734,9 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Verbosity name=Curse of Verbosity
target=opponent target=player
auto=@combat(attacking) source(creature|myBattlefield) turnlimited:name(Draw a card) draw:1 controller auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@combat(attacking) source(creature|myBattlefield) turnlimited:name(Draw a card) draw:1 controller])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@combat(attacking) source(creature|opponentbattlefield) turnlimited:name(Draw a card) draw:1 controller],newability[@combat(attacking) source(creature|opponentbattlefield) turnlimited:name(Draw a card) draw:1 opponent])) forever
text=Enchant player -- Whenever enchanted player is attacked, you draw a card. Each opponent attacking that player does the same. text=Enchant player -- Whenever enchanted player is attacked, you draw a card. Each opponent attacking that player does the same.
mana={2}{U} mana={2}{U}
type=Enchantment type=Enchantment
@@ -20703,8 +20744,9 @@ subtype=Aura Curse
[/card] [/card]
[card] [card]
name=Curse of Vitality name=Curse of Vitality
target=opponent target=player
auto=@combat(attacking) source(creature|myBattlefield) turnlimited:name(Gain 2 life) life:2 controller auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@combat(attacking) source(creature|myBattlefield) turnlimited:name(Gain 2 life) life:2 controller])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@combat(attacking) source(creature|opponentbattlefield) turnlimited:name(Gain 2 life) life:2 controller],newability[@combat(attacking) source(creature|opponentbattlefield) turnlimited:name(Gain 2 life) life:2 opponent])) forever
text=Enchant player -- Whenever enchanted player is attacked, you gain 2 life. Each opponent attacking that player does the same. text=Enchant player -- Whenever enchanted player is attacked, you gain 2 life. Each opponent attacking that player does the same.
mana={2}{W} mana={2}{W}
type=Enchantment type=Enchantment
@@ -20731,8 +20773,9 @@ toughness=5
[/card] [/card]
[card] [card]
name=Curse of the Forsaken name=Curse of the Forsaken
target=opponent target=player
auto=@combat(attacking) source(creature|mybattlefield):name(Gain 1 life) life:1 controller auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@combat(attacking) source(creature|mybattlefield):name(Gain 1 life) life:1 controller])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@combat(attacking) source(creature|opponentbattlefield):name(Gain 1 life) life:1 opponent])) forever
text=Enchant player -- Whenever a creature attacks enchanted player, its controller gains 1 life. text=Enchant player -- Whenever a creature attacks enchanted player, its controller gains 1 life.
mana={2}{W} mana={2}{W}
type=Enchantment type=Enchantment
@@ -20777,7 +20820,7 @@ type=Artifact
[/card] [/card]
[card] [card]
name=Cursed Rack name=Cursed Rack
auto=hmodifer:-3 opponent auto=sethand:4 opponent
text=As Cursed Rack enters the battlefield, choose an opponent. -- The chosen player's maximum hand size is four. text=As Cursed Rack enters the battlefield, choose an opponent. -- The chosen player's maximum hand size is four.
mana={4} mana={4}
type=Artifact type=Artifact
@@ -35243,7 +35286,7 @@ type=Sorcery
[card] [card]
name=Fraying Sanity name=Fraying Sanity
target=player target=player
auto=@each endofturn:deplete:type:*[fresh]:targetedpersonsgraveyard targetedplayer auto=@each endofturn:name(Mill cards) deplete:type:*[fresh]:targetedpersonsgraveyard targetedplayer
text=Enchant player -- At the beginning of each end step, enchanted player puts the top X cards of his or her library into his or her graveyard, where X is the number of cards put into that graveyard from anywhere this turn. text=Enchant player -- At the beginning of each end step, enchanted player puts the top X cards of his or her library into his or her graveyard, where X is the number of cards put into that graveyard from anywhere this turn.
mana={2}{U} mana={2}{U}
type=Enchantment type=Enchantment
@@ -47819,8 +47862,8 @@ type=Instant
[card] [card]
name=Infectious Curse name=Infectious Curse
target=player target=player
auto=lord(*[instant;sorcery]|mycastingzone) altercost(colorless, -1) auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[lord(*[instant;sorcery;curse]|mycastingzone) changecost(colorless:-1)],newability[@each opponent upkeep:name(Gain life) life:-1 opponent && life:1 controller])) forever
auto=@each opponent upkeep:life:-1 opponent && life:1 controller auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[lord(*[instant;sorcery;curse]|opponentcastingzone) changecost(colorless:-1)],newability[@each my upkeep:name(Gain life) life:-1 controller && life:1 controller])) forever
text=Enchant player -- Spells you cast that target enchanted player cost {1} less to cast. -- At the beginning of enchanted player's upkeep, that player loses 1 life and you gain 1 life. text=Enchant player -- Spells you cast that target enchanted player cost {1} less to cast. -- At the beginning of enchanted player's upkeep, that player loses 1 life and you gain 1 life.
type=Enchantment type=Enchantment
subtype=Aura Curse subtype=Aura Curse
@@ -58141,7 +58184,7 @@ type=Sorcery
[card] [card]
name=Maddening Hex name=Maddening Hex
target=player target=player
auto=@movedTo(*[-creature]|targetedpersonsstack):name(Roll a d6) rolld6 6 winability damage:lastrollresult targetedplayer winabilityend loseability damage:targetedplayer opponent loseabilityend rolld6end auto=@movedTo(*[-creature]|targetedpersonsstack):name(Roll a d6) rolld6 6 winability damage:lastrollresult targetedplayer winabilityend loseability damage:lastrollresult targetedplayer loseabilityend rolld6end
text=Enchant player -- Whenever enchanted player casts a noncreature spell, roll a d6. Maddening Hex deals damage to that player equal to the result. Then attach Maddening Hex to another one of your opponents chosen at random. text=Enchant player -- Whenever enchanted player casts a noncreature spell, roll a d6. Maddening Hex deals damage to that player equal to the result. Then attach Maddening Hex to another one of your opponents chosen at random.
mana={1}{R}{R} mana={1}{R}{R}
type=Enchantment type=Enchantment
@@ -67458,7 +67501,7 @@ toughness=4
[card] [card]
name=Oliphaunt name=Oliphaunt
abilities=trample abilities=trample
autohand={2}{cycle}:name(Search mountain) target(mountain|mylibrary) moveto(myhand) and!( shuffle )! autohand={1}{cycle}:name(Search mountain) target(mountain|mylibrary) moveto(myhand) and!( shuffle )!
auto=_ATTACKING_name(Creaure gains 2/0 and trample) target(other creature|myBattlefield) transforms((,newability[2/0],newability[trample])) ueot auto=_ATTACKING_name(Creaure gains 2/0 and trample) target(other creature|myBattlefield) transforms((,newability[2/0],newability[trample])) ueot
text=Trample -- Whenever Oliphaunt attacks, another target creature you control gets +2/+0 and gains trample until end of turn. -- Mountaincycling {1} ({1}, Discard this card: Search your library for a mountain card, reveal it, put it into your hand, then shuffle.) text=Trample -- Whenever Oliphaunt attacks, another target creature you control gets +2/+0 and gains trample until end of turn. -- Mountaincycling {1} ({1}, Discard this card: Search your library for a mountain card, reveal it, put it into your hand, then shuffle.)
mana={5}{R} mana={5}{R}
@@ -74811,8 +74854,8 @@ subtype=Forest Plains
[card] [card]
name=Radiant Restraints name=Radiant Restraints
backside=Radiant Grace backside=Radiant Grace
target=opponent target=player
auto=@movedto(creature|opponentbattlefield):name(Creatures enter tapped) all(trigger[to]) name(Creatures enter tapped) tap(noevent) auto=@movedto(creature|targetedplayerbattlefield):name(Creatures enter tapped) all(trigger[to]) name(Creatures enter tapped) tap(noevent)
text=Enchant player -- Creatures enchanted player controls enter the battlefield tapped. // Radiant Grace text=Enchant player -- Creatures enchanted player controls enter the battlefield tapped. // Radiant Grace
color=white color=white
type=Enchantment type=Enchantment
@@ -87424,9 +87467,11 @@ subtype=Arcane
[/card] [/card]
[card] [card]
name=Sinner's Judgment name=Sinner's Judgment
target=player
abilities=exiledeath abilities=exiledeath
backside=Faithbound Judge backside=Faithbound Judge
target=opponent auto=@each my upkeep restriction{compare(oppotgt)~morethan~0}:name(Put judgdment counter) counter(0/0,1,Judgment) && if compare(hascntjudgment)~morethan~2 then wingame controller
auto=@each my upkeep restriction{compare(ctrltgt)~morethan~0}:name(Put judgdment counter) counter(0/0,1,Judgment) && if compare(hascntjudgment)~morethan~2 then wingame opponent
text=Enchant player -- At the beginning of your upkeep, put a judgment counter on Sinner's Judgment. Then if there are three or more judgment counters on it, enchanted player loses the game. -- If Sinner's Judgment would be put into a graveyard from anywhere, exile it instead. // Faithbound Judge text=Enchant player -- At the beginning of your upkeep, put a judgment counter on Sinner's Judgment. Then if there are three or more judgment counters on it, enchanted player loses the game. -- If Sinner's Judgment would be put into a graveyard from anywhere, exile it instead. // Faithbound Judge
color=white color=white
type=Enchantment type=Enchantment
@@ -92105,8 +92150,8 @@ subtype=Aura
[card] [card]
name=Stain the Mind name=Stain the Mind
other={convoke} name(Convoke) other={convoke} name(Convoke)
auto=choice name(Target opponent) ability$!chooseanameopp name(Search that cards) target(<anyamount>creature[chosenname]|opponentgraveyard,opponentlibrary,opponenthand) moveto(exile) and!( shuffle opponent )! chooseend nonland!$ controller auto=choice name(Target opponent) ability$!chooseanameopp name(Search that cards) target(<anyamount>*[chosenname]|opponentgraveyard,opponentlibrary,opponenthand) moveto(exile) and!( shuffle opponent )! chooseend nonland!$ controller
auto=choice name(Target yourself) ability$!chooseaname name(Search that cards) target(<anyamount>creature[chosenname]|mygraveyard,mylibrary,myhand) moveto(exile) and!( shuffle controller )! chooseend nonland!$ controller auto=choice name(Target yourself) ability$!chooseaname name(Search that cards) target(<anyamount>*[chosenname]|mygraveyard,mylibrary,myhand) moveto(exile) and!( shuffle controller )! chooseend nonland!$ 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.) -- Name a nonland card. Search target player's graveyard, hand, and library for any number of cards with that name and exile them. Then that player shuffles his or her library. 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.) -- Name a nonland card. Search target player's graveyard, hand, and library for any number of cards with that name and exile them. Then that player shuffles his or her library.
mana={4}{B} mana={4}{B}
type=Sorcery type=Sorcery
@@ -96739,7 +96784,7 @@ type=Legendary Enchantment
name=Teferi's Protection name=Teferi's Protection
abilities=exiledeath abilities=exiledeath
auto=all(*|myBattlefield) phaseout auto=all(*|myBattlefield) phaseout
auto=token(Teferi's Protection,Emblem,0/0,indestructible,shroud,cantchangelife,controllershroud,playershroud,notrigger) and!( transforms((,newability[@each my untap:sacrifice])) forever )! auto=token(Teferi's Protection,Emblem,0/0,indestructible,shroud,cantchangelife,controllershroud,playershroud,notrigger) and!( transforms((,newability[preventalldamage to(controller) from(*|opponentzones)],newability[preventalldamage to(controller) from(*|myzones)],newability[@each my untap:sacrifice])) forever )!
text=Until your next turn, your life total can't change and you gain protection from everything. All permanents you control phase out. (While they're phased out, they're treated as though they don't exist. They phase in before you untap during your untap step.) -- Exile Teferi's Protection. text=Until your next turn, your life total can't change and you gain protection from everything. All permanents you control phase out. (While they're phased out, they're treated as though they don't exist. They phase in before you untap during your untap step.) -- Exile Teferi's Protection.
mana={2}{W} mana={2}{W}
type=Instant type=Instant
@@ -98443,12 +98488,12 @@ subtype=Sphere
[/card] [/card]
[card] [card]
name=The Omenkeel name=The Omenkeel
auto=@combatdamagefoeof(player) from(vehicle|mybattlefield):transforms((,newability[all(*[-land;zpos<=thatmuch]|opponentlibrary) moveto(opponentexile)],newability[all(land[zpos<=thatmuch]|opponentlibrary) moveto(opponentexile) and!( counter(0/0.1.OmenkeelExiled) )!])) oneshot auto=@combatdamagefoeof(player) from(vehicle|mybattlefield):name(Exile top cards) transforms((,newability[all(*[zpos<=thatmuch]|opponentlibrary) moveto(opponentexile) and!( if cantargetcard(*[land]|*) then becomes(OmenkeelExiled) forever )!])) forever
auto=@combatdamageof(player) from(vehicle|mybattlefield):transforms((,newability[all(*[-land;zpos<=thatmuch]|mylibrary) moveto(myexile)],newability[all(land[zpos<=thatmuch]|mylibrary) moveto(myexile) and!( counter(0/0.1.OmenkeelExiled) )!])) oneshot auto=@combatdamageof(player) from(vehicle|mybattlefield):name(Exile top cards) transforms((,newability[all(*[zpos<=thatmuch]|mylibrary) moveto(myexile) and!( if cantargetcard(*[land]|*) then becomes(OmenkeelExiled) forever )!])) forever
auto={0}:restriction{can play land} name(Play land from opponent exile) target(land[counter{0/0.1.OmenkeelExiled}]|opponentexile) moveTo(myexile) and!( transforms((,newability[counter(0/0.1.OmenkeelExiled)],newability[canplayfromexile],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] counter(0/0.1.OmenkeelExiled)])) ueot )! auto={0}:restriction{can play land} name(Play land from opponent exile) name(Play land from opponent exile) target(land[OmenkeelExiled]|opponentexile) moveTo(myexile) and!( transforms((,newability[becomes(OmenkeelExiled) forever],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] becomes(OmenkeelExiled) forever])) ueot )!
auto=lord(land[counter{0/0.1.OmenkeelExiled}]|myexile) canplayfromexile auto=lord(land[OmenkeelExiled]|myexile) canplayfromexile
auto={crew(other creature[power>=1]|myBattlefield)}:name(crew 1 [1 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=1]|mybattlefield)~morethan~0,compare(crewtotalpower)~morethan~0} auto={crew(other creature[power>=1]|myBattlefield)}:name(crew 1 [1 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=1]|mybattlefield)~morethan~0,compare(crewtotalpower)~morethan~0}
text=Whenever a Vehicle you control deals combat damage to a player, that player exiles that many cards from the top of their library. You may play lands from among those cards for as long as they remain exiled. -- Crew 1 text=Whenever a Vehicle you control deals combat damage to a player, that player exiles that many cards from the top of their library. You may play lands from among those cards for as long as they remain exiled. -- Crew 1 // {2}{U} Cosima, God of the Voyage
mana={1}{U} mana={1}{U}
type=Legendary Artifact type=Legendary Artifact
subtype=Vehicle subtype=Vehicle
@@ -98458,7 +98503,7 @@ toughness=3
[card] [card]
name=The One Ring name=The One Ring
abilities=indestructible abilities=indestructible
auto=if casted(this) then name(Gain protection) name(Gain protection) transforms((,newability[controllershroud],newability[playershroud])) uynt auto=if casted(this) then name(Gain protection) name(Gain protection) transforms((,newability[controllershroud],newability[playershroud],newability[preventalldamage to(controller) from(*|opponentzones)],newability[preventalldamage to(controller) from(*|myzones)])) uynt
auto=@each my upkeep restriction{compare(hascntburden)~morethan~0}:name(Lose life) life:-hascntburden auto=@each my upkeep restriction{compare(hascntburden)~morethan~0}:name(Lose life) life:-hascntburden
auto={T}:name(Put burden counter) counter(0/0,1,Burden) && draw:hascntburden controller auto={T}:name(Put burden counter) counter(0/0,1,Burden) && draw:hascntburden controller
text=Indestructible -- When The One Ring enters the battlefield, if you cast it, you gain protection from everything until your next turn. -- At the beginning of your upkeep, you lose 1 life for each burden counter on The One Ring. -- {T}: Put a burden counter on The One Ring, then draw a card for each burden counter on The One Ring. text=Indestructible -- When The One Ring enters the battlefield, if you cast it, you gain protection from everything until your next turn. -- At the beginning of your upkeep, you lose 1 life for each burden counter on The One Ring. -- {T}: Put a burden counter on The One Ring, then draw a card for each burden counter on The One Ring.
@@ -100958,7 +101003,10 @@ type=Sorcery
[card] [card]
name=Torment of Scarabs name=Torment of Scarabs
target=player target=player
auto=@each targetedplayer upkeep:ability$!pay[[{L:3}]] name(pay or sacrifice) donothing?sacrifice notatarget(*[-land]|mybattlefield)!$ targetedplayer auto=@each targetedplayer upkeep restriction{type(*[-land]|targetedplayerbattlefield)~morethan~0,type(*|targetedplayerhand)~morethan~0}:name(Pay or sacrifice or discard) name(Pay or sacrifice or discard) ability$!name(Pay or sacrifice or discard) choice name(Discard a card) reject notatarget(*|myhand) _ choice name(Pay 3 life) life:-3 controller _ choice name(Sacrifice nonland permanent) sacrifice notatarget(*[-land]|mybattlefield)!$ targetedplayer
auto=@each targetedplayer upkeep restriction{type(*[-land]|targetedplayerbattlefield)~morethan~0,type(*|targetedplayerhand)~equalto~0}:name(Pay or sacrifice) name(Pay or sacrifice) ability$!name(Pay or sacrifice) choice name(Sacrifice nonland permanent) sacrifice notatarget(*[-land]|mybattlefield) _ choice name(Pay 3 life) life:-3 controller!$ targetedplayer
auto=@each targetedplayer upkeep restriction{type(*[-land]|targetedplayerbattlefield)~equalto~0,type(*|targetedplayerhand)~morethan~0}:name(Pay or discard) name(Pay or discard) ability$!name(Pay or discard) choice name(Discard a card) reject notatarget(*|myhand) _ choice name(Pay 3 life) life:-3 controller!$ targetedplayer
auto=@each targetedplayer upkeep restriction{type(*[-land]|targetedplayerbattlefield)~equalto~0,type(*|targetedplayerhand)~equalto~0}:name(Pay 3 life) name(Pay 3 life) name(Pay 3 life) life:-3 targetedplayer
text=Enchant player -- At the beginning of enchanted player's upkeep, that player loses 3 life unless he or she sacrifices a nonland permanent or discards a card. text=Enchant player -- At the beginning of enchanted player's upkeep, that player loses 3 life unless he or she sacrifices a nonland permanent or discards a card.
mana={3}{B} mana={3}{B}
type=Enchantment type=Enchantment
@@ -101819,7 +101867,7 @@ toughness=5
[card] [card]
name=Trespasser's Curse name=Trespasser's Curse
target=player target=player
auto=@movedto(creature|opponentBattlefield):life:-1 opponent && life:1 controller auto=@movedto(creature|targetedplayerbattlefield):name(Gain life) life:-1 targetedplayer && life:1 controller
text=Enchant player -- Whenever a creature enters the battlefield under enchanted player's control, that player loses 1 life and you gain 1 life. text=Enchant player -- Whenever a creature enters the battlefield under enchanted player's control, that player loses 1 life and you gain 1 life.
mana={1}{B} mana={1}{B}
type=Enchantment type=Enchantment
@@ -102105,8 +102153,8 @@ type=Instant
[/card] [/card]
[card] [card]
name=True-Name Nemesis name=True-Name Nemesis
auto=name(choose opponent) notatarget(opponent) deplete:0 auto=choice name(choose opponent) transforms((,newability[protection from(*|opponentzones)])) forever
auto=protection from(*) auto=choice name(choose yourself) transforms((,newability[protection from(*|myzones)])) forever
text=As True-Name Nemesis enters the battlefield, choose a player. True-Name Nemesis has protection from the chosen player. (This creature can't be blocked, targeted, dealt damage, or enchanted by anything controlled by that player.) text=As True-Name Nemesis enters the battlefield, choose a player. True-Name Nemesis has protection from the chosen player. (This creature can't be blocked, targeted, dealt damage, or enchanted by anything controlled by that player.)
mana={1}{U}{U} mana={1}{U}{U}
type=Creature type=Creature
+11 -10
View File
@@ -1,6 +1,6 @@
#Primitives Pack for Wagic the Homebrew. #Primitives Pack for Wagic the Homebrew.
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card #Please keep these card alphabetized, and try to have the "name=" line at the top of each card
#I sorted this programmatically so the other comments are removed except for AUTO_DEFINE - Vitty85 11-07-2023 #I sorted this programmatically so the other comments are removed except for AUTO_DEFINE - Vitty85 13-07-2023
[card] [card]
name=Abandon Reason name=Abandon Reason
target=<upto:2>creature target=<upto:2>creature
@@ -22427,8 +22427,8 @@ type=Instant
[/card] [/card]
[card] [card]
name=Coordinated Barrage name=Coordinated Barrage
target=creature[attacking;blocking] restriction=type(creature[attacking;blocking]|battlefield)~morethan~0
auto=chooseatype damage:type:*[chosentype]:mybattlefield chooseend auto=chooseatype name(Deal damage) target(creature[attacking;blocking]|battlefield) damage:type:*[chosentype]:mybattlefield chooseend
text=Choose a creature type. Coordinated Barrage deals damage to target attacking or blocking creature equal to the number of permanents you control of the chosen type. text=Choose a creature type. Coordinated Barrage deals damage to target attacking or blocking creature equal to the number of permanents you control of the chosen type.
mana={W} mana={W}
type=Instant type=Instant
@@ -23848,8 +23848,8 @@ type=Enchantment
[card] [card]
name=Crosis, the Purger name=Crosis, the Purger
abilities=flying abilities=flying
auto=@combatdamagefoeof(player) from(this):pay({2}{B}) activatechooseacolor all(*[chosencolor]|opponenthand) reject activatechooseend auto=@combatdamagefoeof(player) from(this):may name(Pay and choose color) pay({2}{B}) name(Pay and choose color) transforms((,newability[choice name(Choose red) target(*|opponenthand) moveto(myreveal) and!( moveto(opponenthand) and!( reject all(*[red]|opponenthand) )! )!],newability[choice name(Choose green) target(*|opponenthand) moveto(myreveal) and!( moveto(opponenthand) and!( reject all(*[green]|opponenthand) )! )!],newability[choice name(Choose blue) target(*|opponenthand) moveto(myreveal) and!( moveto(opponenthand) and!( reject all(*[blue]|opponenthand) )! )!],newability[choice name(Choose white) target(*|opponenthand) moveto(myreveal) and!( moveto(opponenthand) and!( reject all(*[white]|opponenthand) )! )!],newability[choice name(Choose black) target(*|opponenthand) moveto(myreveal) and!( moveto(opponenthand) and!( reject all(*[black]|opponenthand) )! )!])) oneshot
auto=@combatdamageof(player) from(this):pay({2}{B}) activatechooseacolor all(*[chosencolor]|myhand) reject activatechooseend auto=@combatdamageof(player) from(this):may name(Pay and choose color) pay({2}{B}) name(Pay and choose color) transforms((,newability[choice name(Choose red) reject all(*[red]|myhand)],newability[choice name(Choose green) reject all(*[green]|opponenthand)],newability[choice name(Choose blue) reject all(*[blue]|opponenthand)],newability[choice name(Choose white) reject all(*[white]|opponenthand)],newability[choice name(Choose black) reject all(*[black]|opponenthand)])) oneshot
text=Flying -- Whenever Crosis, the Purger deals combat damage to a player, you may pay {2}{B}. If you do, choose a color, then that player reveals his or her hand and discards all cards of that color. text=Flying -- Whenever Crosis, the Purger deals combat damage to a player, you may pay {2}{B}. If you do, choose a color, then that player reveals his or her hand and discards all cards of that color.
mana={3}{U}{B}{R} mana={3}{U}{B}{R}
type=Legendary Creature type=Legendary Creature
@@ -24994,7 +24994,7 @@ type=Enchantment
[card] [card]
name=Curse of Oblivion name=Curse of Oblivion
target=player target=player
auto=@each targetedplayer upkeep:ability$!name(exile 2 cards from graveyard) target(<2>*|mygraveyard) moveTo(exile)!$ targetedplayer auto=@each targetedplayer upkeep:name(Exile 2 cards from graveyard) ability$!name(Exile 2 cards from graveyard) name(Exile 2 cards from graveyard) target(<2>*|mygraveyard) moveto(exile)!$ targetedplayer
text=At the beginning of enchanted player's upkeep, that player exiles two cards from his or her graveyard. text=At the beginning of enchanted player's upkeep, that player exiles two cards from his or her graveyard.
mana={3}{B} mana={3}{B}
type=Enchantment type=Enchantment
@@ -25003,7 +25003,7 @@ subtype=Aura Curse
[card] [card]
name=Curse of Stalked Prey name=Curse of Stalked Prey
target=player target=player
auto=@combatdamaged(targetedplayer) from(creature):all(trigger[from]) counter(1/1) auto=@combatdamaged(targetedplayer) from(creature):name(Put 1/1 counter) all(trigger[from]) name(Put 1/1 counter) counter(1/1)
text=Enchant player -- Whenever a creature deals combat damage to enchanted player, put a +1/+1 counter on that creature. text=Enchant player -- Whenever a creature deals combat damage to enchanted player, put a +1/+1 counter on that creature.
mana={1}{R} mana={1}{R}
type=Enchantment type=Enchantment
@@ -25012,7 +25012,7 @@ subtype=Aura Curse
[card] [card]
name=Curse of the Bloody Tome name=Curse of the Bloody Tome
target=player target=player
auto=@each targetedplayer upkeep:deplete:2 targetedplayer auto=@each targetedplayer upkeep:name(Mill 2 cards) deplete:2 targetedplayer
text=Enchant player -- At the beginning of enchanted player's upkeep, that player mills two cards. text=Enchant player -- At the beginning of enchanted player's upkeep, that player mills two cards.
mana={2}{U} mana={2}{U}
type=Enchantment type=Enchantment
@@ -25030,7 +25030,7 @@ subtype=Aura Curse
[card] [card]
name=Curse of the Pierced Heart name=Curse of the Pierced Heart
target=player target=player
auto=@each targetedplayer upkeep:damage:1 targetedplayer auto=@each targetedplayer upkeep:name(Deal damage) damage:1 targetedplayer
text=Enchant player -- At the beginning of enchanted player's upkeep, Curse of the Pierced Heart deals 1 damage to that player. text=Enchant player -- At the beginning of enchanted player's upkeep, Curse of the Pierced Heart deals 1 damage to that player.
mana={1}{R} mana={1}{R}
type=Enchantment type=Enchantment
@@ -25047,7 +25047,8 @@ type=Sorcery
[card] [card]
name=Curse of Thirst name=Curse of Thirst
target=player target=player
auto=@each targetedplayer upkeep:damage:targetedcurses auto=if compare(oppotgt)~morethan~0 then name(Target opponent) name(Target opponent) transforms((,newability[@each opponent upkeep:damage:targetedcurses opponent])) forever
auto=if compare(ctrltgt)~morethan~0 then name(Target yourself) name(Target yourself) transforms((,newability[@each my upkeep:damage:targetedcurses controller])) forever
text=Enchant player -- At the beginning of enchanted player's upkeep, Curse of Thirst deals damage to that player equal to the number of Curses attached to him or her. text=Enchant player -- At the beginning of enchanted player's upkeep, Curse of Thirst deals damage to that player equal to the number of Curses attached to him or her.
mana={4}{B} mana={4}{B}
type=Enchantment type=Enchantment
@@ -1,6 +1,6 @@
#Planeswalkers Primitives Pack for Wagic the Homebrew. #Planeswalkers Primitives Pack for Wagic the Homebrew.
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card #Please keep these card alphabetized, and try to have the "name=" line at the top of each card
#We sorted this in alphabetical order - Luruz & Vitty85 11-07-2023 #We sorted this in alphabetical order - Luruz & Vitty85 12-07-2023
[card] [card]
name=Abian, Luvion Usurper name=Abian, Luvion Usurper
auto=counter(0/0,5,loyalty) auto=counter(0/0,5,loyalty)
@@ -526,11 +526,10 @@ subtype=Chandra
[/card] [/card]
[card] [card]
name=Chandra, Heart of Fire name=Chandra, Heart of Fire
aicode=activate moveto(exile) target(<anyamount>*[instant;sorcery;red]|myLibrary,myGraveyard) and!( canplayfromexile )!
auto=counter(0/0,5,loyalty) auto=counter(0/0,5,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Discard hand, exile three from top and cast from exile) ability$!name(Discard hand) reject all(*|myHand)!$ controller && moveTo(exile) all(*[zpos<=3]|mylibrary) && transforms((,newability[canplayfromexile])) ueot auto={C(0/0,1,Loyalty)}:name(+1: Discard hand, exile three from top and cast from exile) discard:type:*:myhand && all(*[zpos<=3]|mylibrary) moveTo(exile) and!( transforms((,newability[canplayfromexile ueot])) ueot )!
auto={C(0/0,1,Loyalty)}:name(+1: Deals 2 damage to any target) damage:2 target(anytarget) auto={C(0/0,1,Loyalty)}:name(+1: Deals 2 damage to any target) damage:2 target(anytarget)
auto={C(0/0,-9,Loyalty)}:name(-9: Search instants or sorceries, exile them and add six red mana) target(<anyamount>*[instant;sorcery;red]|myLibrary,myGraveyard) moveto(exile) and!( transforms((,newability[canplayfromexile])) ueot )! && shuffle controller && add{R}{R}{R}{R}{R}{R} auto={C(0/0,-9,Loyalty)}:name(-9: Search red instants or sorceries, exile them and add six red mana) transforms((,newability[target(<anyamount>*[-permanent&red]|myLibrary^myGraveyard) moveto(myexile) and!( transforms((,newability[canplayfromexile ueot],newability[shuffle])) ueot )!],newability[add{R}{R}{R}{R}{R}{R}])) oneshot
text=+1: Discard your hand, then exile the top three cards of your library. Until end of turn, you may play cards exiled this way. -- +1: Chandra, Heart of Fire deals 2 damage to any target. -- 9: Search your graveyard and library for any number of red instant and/or sorcery cards, exile them, then shuffle your library. You may cast them this turn. Add six {R}. text=+1: Discard your hand, then exile the top three cards of your library. Until end of turn, you may play cards exiled this way. -- +1: Chandra, Heart of Fire deals 2 damage to any target. -- 9: Search your graveyard and library for any number of red instant and/or sorcery cards, exile them, then shuffle your library. You may cast them this turn. Add six {R}.
mana={3}{R}{R} mana={3}{R}{R}
type=Legendary Planeswalker type=Legendary Planeswalker
@@ -644,10 +643,12 @@ subtype=Chandra
[card] [card]
name=Chandra, Pyromaster name=Chandra, Pyromaster
auto=counter(0/0,4,loyalty) auto=counter(0/0,4,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage to opponent and 1 to creature) damage:1 opponent && target(creature|opponentbattlefield) damage:1 && transforms((,newability[cantblock])) ueot auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage only to opponent) damage:1 opponent
auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage to controller and 1 to creature) damage:1 controller && target(creature|mybattlefield) damage:1 && transforms((,newability[cantblock])) ueot auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage only to controller) damage:1 controller
auto={C(0/0,0,Loyalty)}:name(+0: Exile the top and may play it) moveto(exile) and!(transforms((,newability[canplayfromexile])) ueot)! all(*[zpos=1]|mylibrary) auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage to opponent and creature) damage:1 opponent && target(creature|opponentbattlefield) damage:1 && transforms((,newability[cantblock])) ueot
auto={C(0/0,-7,Loyalty)}:name(-7: Exile the top ten and may cast it) moveto(exile) all(*[zpos<=10]|mylibrary) && target(*[instant;sorcery]|myexile) clone && clone && clone auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage to controller and creature) damage:1 controller && target(creature|mybattlefield) damage:1 && transforms((,newability[cantblock])) ueot
auto={C(0/0,0,Loyalty)}:name(+0: Exile the top and may play it) all(*[zpos=1]|mylibrary) moveto(myexile) and!(transforms((,newability[canplayfromexile ueot])) ueot )!
auto={C(0/0,-7,Loyalty)}:name(-7: Exile the top ten and may cast it) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((tobecha,newability[all(*[zpos<=10]|mylibrary) moveto(myexile) and!( becomes(tobecha) ueot )!],newability[name(Choose instant or sorcery) target(*[-permanent&tobecha]|myexile) transforms((,newability[choice name(Cast 3 copies) activate castcard(copied) && activate castcard(copied) && activate castcard(copied)],newability[choice name(Don't cast copies) donothing],newability[all(tobecha|myexile) losesatype(tobecha)])) ueot])) ueot )!
text=+1: Chandra, Pyromaster deals 1 damage to target player and 1 damage to up to one target creature that player controls. That creature can't block this turn. -- 0: Exile the top card of your library. You may play it this turn. -- -7: Exile the top ten cards of your library. Choose an instant or sorcery card exiled this way and copy it three times. You may cast the copies without paying their mana costs. text=+1: Chandra, Pyromaster deals 1 damage to target player and 1 damage to up to one target creature that player controls. That creature can't block this turn. -- 0: Exile the top card of your library. You may play it this turn. -- -7: Exile the top ten cards of your library. Choose an instant or sorcery card exiled this way and copy it three times. You may cast the copies without paying their mana costs.
mana={2}{R}{R} mana={2}{R}{R}
type=Legendary Planeswalker type=Legendary Planeswalker
-1
View File
@@ -68,7 +68,6 @@ public:
int snowManaC; int snowManaC;
string lastChosenName; string lastChosenName;
vector<string> prowledTypes; vector<string> prowledTypes;
vector<MTGCardInstance*>curses;
Player(GameObserver *observer, string deckFile, string deckFileSmall, MTGDeck * deck = NULL); Player(GameObserver *observer, string deckFile, string deckFileSmall, MTGDeck * deck = NULL);
virtual ~Player(); virtual ~Player();
virtual void setObserver(GameObserver*g); virtual void setObserver(GameObserver*g);
-5
View File
@@ -726,7 +726,6 @@ void GameObserver::gameStateBasedEffects()
for (int i = 0; i < 2; i++) for (int i = 0; i < 2; i++)
{ {
MTGGameZone * zone = players[i]->game->inPlay; MTGGameZone * zone = players[i]->game->inPlay;
players[i]->curses.clear();
for (int j = zone->nb_cards - 1; j >= 0; j--) for (int j = zone->nb_cards - 1; j >= 0; j--)
{ {
MTGCardInstance * card = zone->cards[j]; MTGCardInstance * card = zone->cards[j];
@@ -843,10 +842,6 @@ void GameObserver::gameStateBasedEffects()
{ {
card->target->enchanted = true; card->target->enchanted = true;
} }
if (card->playerTarget && card->hasType("curse"))
{
card->playerTarget->curses.push_back(card);
}
//704.5n If an Aura is attached to an illegal object or player, //704.5n If an Aura is attached to an illegal object or player,
//or is not attached to an object or player, that Aura is put into its owners graveyard. //or is not attached to an object or player, that Aura is put into its owners graveyard.
+52 -1
View File
@@ -2259,9 +2259,31 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
return NULL; return NULL;
} }
if (StartsWith(s, "chooseacolor ") || StartsWith(s, "chooseatype ") || StartsWith(s, "chooseaname")) if (StartsWith(s, "chooseacolor ") || StartsWith(s, "chooseatype ") || StartsWith(s, "chooseaname"))
{ {
if (storedAbilityString.size() && StartsWith(s, "chooseaname"))
{
bool chooseoppo = false;
vector<string> splitChoose = parseBetween(s, "chooseaname ", " chooseend", false);
if(!splitChoose.size()){
splitChoose = parseBetween(s, "chooseanameopp ", " chooseend", false);
chooseoppo = true;
}
if (splitChoose.size())
{
if(!chooseoppo)
s = "chooseaname ";
else
s = "chooseanameopp ";
s.append(storedAbilityString);
s.append(" ");
if(splitChoose[2].empty())
s.append(splitChoose[1]);
else
s.append(splitChoose[2]);
}
}
MTGAbility * choose = parseChooseActionAbility(s, card, spell, target, 0, id); MTGAbility * choose = parseChooseActionAbility(s, card, spell, target, 0, id);
choose = NEW GenericActivatedAbility(observer, "", "", id, card, choose, NULL); choose = NEW GenericActivatedAbility(observer, "", "", id, card, choose, NULL);
MayAbility * mainAbility = NEW MayAbility(observer, id, choose, card, true); MayAbility * mainAbility = NEW MayAbility(observer, id, choose, card, true);
@@ -2305,6 +2327,34 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
storedPayString.clear(); storedPayString.clear();
} }
bool chooseoppo = false;
vector<string> splitChoose = parseBetween(s, "chooseaname ", " chooseend", false);
if(!splitChoose.size()){
splitChoose = parseBetween(s, "chooseanameopp ", " chooseend", false);
chooseoppo = true;
}
if (splitChoose.size() && storedAbilityString.empty())
{
storedAbilityString = splitChoose[1];
size_t pos1 = s.find("transforms(("); // Try to handle chooseaname ability inside ability$! or transforms keywords.
size_t pos2 = s.find("ability$!");
if(pos2 == string::npos)
pos2 = s.find("winability"); // Try to handle chooseaname ability inside winability or loseability keywords.
if(pos2 == string::npos)
pos2 = s.find("loseability");
size_t pos3 = s.find(splitChoose[1]);
if((pos1 == string::npos && pos2 == string::npos) || (pos2 != string::npos && pos1 != string::npos && pos3 <= pos1 && pos3 <= pos2) ||
(pos2 == string::npos && pos1 != string::npos && pos3 <= pos1) || (pos1 == string::npos && pos2 != string::npos && pos3 <= pos2)){
s = splitChoose[0];
if(!chooseoppo)
s.append("chooseaname ");
else
s.append("chooseanameopp ");
s.append(splitChoose[2]);
} else
storedAbilityString.clear();
}
vector<string> splitGrant = parseBetween(s, "grant ", " grantend", false); vector<string> splitGrant = parseBetween(s, "grant ", " grantend", false);
if (splitGrant.size() && storedAbilityString.empty()) if (splitGrant.size() && storedAbilityString.empty())
{ {
@@ -5781,6 +5831,7 @@ MTGAbility * AbilityFactory::parsePhaseActionAbility(string s,MTGCardInstance *
_target = spell->getNextCardTarget(); _target = spell->getNextCardTarget();
if(!_target) if(!_target)
_target = target; _target = target;
return NEW APhaseActionGeneric(observer, id, card, _target, trim(splitActions[2]), restrictions, phase, sourceinPlay, next, myturn, opponentturn, once, checkexile); return NEW APhaseActionGeneric(observer, id, card, _target, trim(splitActions[2]), restrictions, phase, sourceinPlay, next, myturn, opponentturn, once, checkexile);
} }
+9 -3
View File
@@ -2291,10 +2291,16 @@ bool TriggerTargetChooser::equals(TargetChooser * tc)
/*my curses */ /*my curses */
bool myCursesChooser::canTarget(Targetable * target, bool) bool myCursesChooser::canTarget(Targetable * target, bool)
{ {
for(unsigned int i = 0;i < source->controller()->curses.size();++i) for (int j = source->controller()->game->battlefield->nb_cards - 1; j >= 0; --j)
{ {
MTGCardInstance * compare = source->controller()->curses[i]; MTGCardInstance * compare = source->controller()->game->battlefield->cards[j];
if(compare == dynamic_cast<MTGCardInstance*>(target)) if(compare->hasType("Curse") && compare->playerTarget == source->controller() && compare == dynamic_cast<MTGCardInstance*>(target))
return true;
}
for (int j = source->controller()->opponent()->game->battlefield->nb_cards - 1; j >= 0; --j)
{
MTGCardInstance * compare = source->controller()->opponent()->game->battlefield->cards[j];
if(compare->hasType("Curse") && compare->playerTarget == source->controller() && compare == dynamic_cast<MTGCardInstance*>(target))
return true; return true;
} }
return false; return false;
+26 -3
View File
@@ -572,7 +572,19 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card)
} }
else if (s == "targetedcurses") else if (s == "targetedcurses")
{ {
intValue = (card->playerTarget)?card->playerTarget->curses.size():0; intValue = 0;
for (int j = card->controller()->game->battlefield->nb_cards - 1; j >= 0; --j)
{
MTGCardInstance * curse = card->controller()->game->battlefield->cards[j];
if (curse->hasType("Curse") && curse->playerTarget == card->playerTarget)
intValue++;
}
for (int j = card->controller()->opponent()->game->battlefield->nb_cards - 1; j >= 0; --j)
{
MTGCardInstance * curse = card->controller()->opponent()->game->battlefield->cards[j];
if (curse->hasType("Curse") && curse->playerTarget == card->playerTarget)
intValue++;
}
} }
else if (s == "lifetotal" || s == "opponentlifetotal") else if (s == "lifetotal" || s == "opponentlifetotal")
{ {
@@ -820,9 +832,9 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card)
{ {
intValue = (s == "countedamount")?target->CountedObjects:target->CountedObjectsB; intValue = (s == "countedamount")?target->CountedObjects:target->CountedObjectsB;
} }
else if (s == "kicked" || s == "handsize") else if (s == "handsize" || s == "ohandsize")
{ {
intValue = (s == "kicked")?card->kicked:target->controller()->handsize; intValue = (s == "ohandsize")?card->controller()->opponent()->handsize:target->controller()->handsize;
} }
else if (s == "olandg" || s == "olandu") else if (s == "olandg" || s == "olandu")
{ {
@@ -1650,6 +1662,17 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
{ {
intValue = (s == "iscommander")?card->isCommander:card->isRingBearer; intValue = (s == "iscommander")?card->isCommander:card->isRingBearer;
} }
else if (s == "oppotgt" || s == "ctrltgt") // Return 1 if card targeted the opponent -- Return 1 if card targeted its controller
{
intValue = 0;
Player* p = (s == "oppotgt")?card->controller()->opponent():card->controller();
if(card->playerTarget == p)
intValue = 1;
}
else if (s == "kicked")
{
intValue = card->kicked;
}
else if(!intValue)//found nothing, try parsing a atoi else if(!intValue)//found nothing, try parsing a atoi
{ {
intValue = atoi(s.c_str()); intValue = atoi(s.c_str());