diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index 6fbb5a281..d04270ac0 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -131,7 +131,7 @@ toughness=2 [/card] [card] name=Acclaimed Contender -auto=restriction type(other creature[knight]|mybattlefield)~morethan~0:reveal:5 optionone name(Get card) target(aura,knight,equipment,legenday artifact|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<5>*|reveal) bottomoflibrary optiontwoend revealend +auto=restriction type(other creature[knight]|mybattlefield)~morethan~0:reveal:5 optionone name(Get card) target(*[aura;knight;equipment;legenday artifact]|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<5>*|reveal) bottomoflibrary optiontwoend revealend text=When Acclaimed Contender enters the battlefield, if you control another Knight, look at the top five cards of your library. You may reveal a Knight, Aura, Equipment, or legendary artifact card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. mana={2}{W} type=Creature @@ -151,7 +151,7 @@ toughness=3 [/card] [card] name=Acolyte of Affliction -auto=deplete:2 controller && may moveTo(myHand) target(*[-sorcery,-instant,-land]|myGraveyard) oneshot +auto=deplete:2 controller && may moveTo(myHand) target(*[-sorcery;-instant]|myGraveyard) oneshot text=When Acolyte of Affliction enters the battlefield, put the top two cards of your library into your graveyard, then you may return a permanent card from your graveyard to your hand. mana={2}{B}{G} type=Creature @@ -650,8 +650,8 @@ type=Sorcery [/card] [card] name=Ajani's Aid -auto=moveto(myhand) target(Ajani, Valiant Protector|mylibrary) -auto=moveto(myhand) target(Ajani, Valiant Protector|mygraveyard) +auto=moveto(myhand) target(Ajani^ Valiant Protector|mylibrary) +auto=moveto(myhand) target(Ajani^ Valiant Protector|mygraveyard) auto={S}:target(creature) preventAllCombatDamage to(mytgt) ueot text=When Ajani's Aid enters the battlefield, you may search your library and/or graveyard for a card named Ajani, Valiant Protector, reveal it, and put it into your hand. If you search your library this way, shuffle it. -- Sacrifice Ajani's Aid: Prevent all combat damage a creature of your choice would deal this turn. mana={2}{G}{W} @@ -1556,7 +1556,7 @@ name=Angrath's Fury target=creature auto=destroy auto=ability$!name(Deal 3 damages) name(Deal 3 damages) damage:3 target(player,planeswalker)!$ controller -auto=may name(Move Angrath, Minotaur Pirate to hand) name(Move Angrath, Minotaur Pirate to hand) moveto(myhand) target(Angrath, Minotaur Pirate|mylibrary,mygraveyard) +auto=may name(Move Angrath, Minotaur Pirate to hand) name(Move Angrath, Minotaur Pirate to hand) moveto(myhand) target(Angrath^ Minotaur Pirate|mylibrary,mygraveyard) text=Destroy target creature. Angrath's Fury deals 3 damage to target player or planeswalker. You may search your library and/or graveyard for a card named Angrath, Minotaur Pirate, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={3}{B}{R} type=Sorcery @@ -2588,7 +2588,7 @@ type=Enchantment [/card] [card] name=Ashiok's Forerunner -auto=may moveto(myHand) target(Ashiok, Sculptor of Fears|mylibrary,mygraveyard) && shuffle +auto=may moveto(myHand) target(Ashiok^ Sculptor of Fears|mylibrary,mygraveyard) && shuffle text=Flash -- When Ashiok's Forerunner enters the battlefield, you may search your library and/or graveyard for a card named Ashiok, Sculptor of Fears, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={3}{U}{B} type=Creature @@ -3639,8 +3639,8 @@ toughness=3 name=Basri's Aegis target=creature auto=counter(1/1,1) -auto=choice name(Search Library) may moveto(myhand) target(Basri, Devoted Paladin|myLibrary) && shuffle -auto=choice name(Search Graveyard) may moveto(myhand) target(Basri, Devoted Paladin|myGraveyard) +auto=choice name(Search Library) may moveto(myhand) target(Basri^ Devoted Paladin|myLibrary) && shuffle +auto=choice name(Search Graveyard) may moveto(myhand) target(Basri^ Devoted Paladin|myGraveyard) text=Put a +1/+1 counter on each of up to two target creatures. You may search your library and/or graveyard for a card named Basri, Devoted Paladin, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={2}{W}{W} type=Sorcery @@ -5643,8 +5643,8 @@ type=Sorcery [card] name=Brallin, Skyshark Rider abilities=hiddenface,partner -aicode=activate moveTo(myhand) target(Shabraz, the Skyshark|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Shabraz, the Skyshark|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Shabraz, the Skyshark|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +aicode=activate moveTo(myhand) target(Shabraz^ the Skyshark|mylibrary) +auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Shabraz^ the Skyshark|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Shabraz^ the Skyshark|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=@discarded(*|myHand):all(this) counter(1/1,1) && damage:1 opponent auto={R}:target(creature[Shark]) trample ueot text=Partner with Shabraz, the Skyshark (When this creature enters the battlefield, target player may put Shabraz into their hand from their library, then shuffle.) -- Whenever you discard a card, put a +1/+1 counter on Brallin, Skyshark Rider and it deals 1 damage to each opponent. -- {R}: Target Shark gains trample until end of turn. @@ -7241,8 +7241,8 @@ toughness=4 [card] name=Cazur, Ruthless Stalker abilities=hiddenface,partner -aicode=activate moveTo(myhand) target(Ukkima, Stalking Shadow|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Ukkima, Stalking Shadow|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Ukkima, Stalking Shadow|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +aicode=activate moveTo(myhand) target(Ukkima^ Stalking Shadow|mylibrary) +auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Ukkima^ Stalking Shadow|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Ukkima^ Stalking Shadow|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=@combatdamaged(player) from(creature|myBattlefield):all(trigger[from]) counter(1/1) text=Partner with Ukkima, Stalking Shadow (When this creature enters the battlefield, target player may put Ukkima into their hand from their library, then shuffle.) -- Whenever a creature you control deals combat damage to a player, put a +1/+1 counter on that creature. mana={3}{G} @@ -7589,8 +7589,8 @@ toughness=2 [card] name=Chandra's Firemaw abilities=haste -auto=choice name(Search Library) may moveto(myhand) target(Chandra, Flame's Catalyst|myLibrary) && shuffle -auto=choice name(Search Graveyard) may moveto(myhand) target(Chandra, Flame's Catalyst|myGraveyard) +auto=choice name(Search Library) may moveto(myhand) target(Chandra^ Flame's Catalyst|myLibrary) && shuffle +auto=choice name(Search Graveyard) may moveto(myhand) target(Chandra^ Flame's Catalyst|myGraveyard) text=Haste -- When Chandra's Firemaw enters the battlefield, you may search your library and/or graveyard for a card named Chandra, Flame's Catalyst, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={3}{R}{R} type=Creature @@ -12638,7 +12638,7 @@ type=Sorcery [card] name=Domri's Nodorog abilities=trample -auto=may moveTo(myhand) target(Domri, City Smasher|myLibrary,myGraveyard) +auto=may moveTo(myhand) target(Domri^ City Smasher|myLibrary,myGraveyard) text=Trample -- When Domri's Nodorog enters the battlefield, you may search your library and/or graveyard for a card named Domri, City Smasher, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={3}{R}{G} type=Creature @@ -12763,7 +12763,7 @@ toughness=3 [card] name=Dovin's Dismissal auto=may target(creature[tapped]) moveto(ownerlibrary) -auto=ability$!name(Choose one) choice name(Don't search) donothing _ choice name(Search library) moveto(myhand) target(Dovin, Architect of Law|mylibrary) _ choice name(Search graveyard) moveto(myhand) target(Dovin, Architect of Law|mygraveyard)!$ controller +auto=ability$!name(Choose one) choice name(Don't search) donothing _ choice name(Search library) moveto(myhand) target(Dovin^ Architect of Law|mylibrary) _ choice name(Search graveyard) moveto(myhand) target(Dovin^ Architect of Law|mygraveyard)!$ controller text=Put up to one target tapped creature on top of its owner's library. You may search your library and/or graveyard for a card named Dovin, Architect of Law, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={2}{W}{U} type=Instant @@ -14064,7 +14064,7 @@ subtype=Saga [/card] [card] name=Elspeth's Devotee -auto=may moveto(myHand) target(Elspeth, Undaunted Hero|mylibrary,mygraveyard) && shuffle +auto=may moveto(myHand) target(Elspeth^ Undaunted Hero|mylibrary,mygraveyard) && shuffle text=When Elspeth's Devotee enters the battlefield, you may search your library and/or graveyard for a card named Elspeth, Undaunted Hero, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={2}{W}{W} type=Creature @@ -14987,8 +14987,8 @@ type=Enchantment [card] name=Ethereal Elk abilities=trample -auto=may moveto(myhand) target(Vivien, Nature's Avenger|mylibrary) -auto=may moveto(myhand) target(Vivien, Nature's Avenger|mygraveyard) +auto=may moveto(myhand) target(Vivien^ Nature's Avenger|mylibrary) +auto=may moveto(myhand) target(Vivien^ Nature's Avenger|mygraveyard) text=Trample -- When Ethereal Elk enters the battlefield, you may search your library and/or graveyard for a card named Vivien, Nature's Avenger, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={3}{G}{G} type=Creature @@ -18170,8 +18170,8 @@ type=Enchantment [card] name=Garruk's Warsteed abilities=vigilance -auto=choice name(Search Library) may moveto(myhand) target(Garruk, Savage Herald|myLibrary) && shuffle -auto=choice name(Search Graveyard) may moveto(myhand) target(Garruk, Savage Herald|myGraveyard) +auto=choice name(Search Library) may moveto(myhand) target(Garruk^ Savage Herald|myLibrary) && shuffle +auto=choice name(Search Graveyard) may moveto(myhand) target(Garruk^ Savage Herald|myGraveyard) text=Vigilance -- When Garruk's Warsteed enters the battlefield, you may search your library and/or graveyard for a card named Garruk, Savage Herald, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={3}{G}{G} type=Creature @@ -18717,7 +18717,7 @@ type=Instant [/card] [card] name=Gideon's Resolve -auto=may moveto(myhand) target(Gideon, Martial Paragon|mylibrary) +auto=may moveto(myhand) target(Gideon^ Martial Paragon|mylibrary) auto=lord(creature|mybattlefield) 1/1 text=When Gideon's Resolve enters the battlefield, you may search your library and/or graveyard for a card named Gideon, Martial Paragon, reveal it, and put it into your hand. If you search your library this way, shuffle it. -- Creatures you control get +1/+1. mana={4}{W} @@ -19910,8 +19910,8 @@ toughness=4 [card] name=Goldmane Griffin abilities=flying,vigilance -auto=moveto(myhand) target(Ajani, Inspiring Leader|mylibrary) -auto=moveto(myhand) target(Ajani, Inspiring Leader|mygraveyard) +auto=moveto(myhand) target(Ajani^ Inspiring Leader|mylibrary) +auto=moveto(myhand) target(Ajani^ Inspiring Leader|mygraveyard) text=Flying, vigilance -- When Goldmane Griffin enters the battlefield, you may search your library and/or graveyard for a card named Ajani, Inspiring Leader, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={3}{W}{W} type=Creature @@ -20225,7 +20225,7 @@ type=Enchantment name=Grasping Current target=creature auto=moveto(ownerhand) -auto=moveto(myhand) target(Jace, Ingenious Mind-Mage|mylibrary) +auto=moveto(myhand) target(Jace^ Ingenious Mind-Mage|mylibrary) text=Return up to two target creatures to their owner's hand. -- Search your library and/or graveyard for a card named Jace, Ingenious Mind-Mage, reveal it, and put it into your hand. If you searched your library this way, shuffle it. mana={4}{U} type=Sorcery @@ -21111,8 +21111,8 @@ toughness=4 [card] name=Haldan, Avid Arcanist abilities=hiddenface,canplayfromexile,partner -aicode=activate moveTo(myhand) target(Pako, Arcane Retriever|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Pako, Arcane Retriever|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Pako, Arcane Retriever|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +aicode=activate moveTo(myhand) target(Pako^ Arcane Retriever|mylibrary) +auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Pako^ Arcane Retriever|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Pako^ Arcane Retriever|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=lord(*[-creature]|mycastingzone) transforms((,newability[anytypeofmana])) text=Partner with Pako, Arcane Retriever (When this creature enters the battlefield, target player may put Pako into their hand from their library, then shuffle.) -- You may play noncreature cards from exile with fetch counters on them if you exiled them, and you may spend mana as though it were mana of any color to cast those spells. mana={2}{U} @@ -21598,8 +21598,8 @@ auto=this(variable{type:dragon:myrestrictedcastingzone}>0) {T}:add{R} auto=this(variable{type:dragon:myrestrictedcastingzone}>0) {T}:add{G} auto=this(variable{type:dragon:myrestrictedcastingzone}>0) {T}:add{B} auto={2}{T}{S}:name(Move dragon) moveto(myhand) target(creature[dragon]|mygraveyard) -auto={2}{T}{S}:name(Move Ugin, the Ineffable) moveto(myhand) target(Ugin, the Ineffable|mygraveyard) -auto={2}{T}{S}:name(Move Ugin, the Spirit Dragon) moveto(myhand) target(Ugin, the Spirit Dragon|mygraveyard) +auto={2}{T}{S}:name(Move Ugin, the Ineffable) moveto(myhand) target(Ugin^ the Ineffable|mygraveyard) +auto={2}{T}{S}:name(Move Ugin, the Spirit Dragon) moveto(myhand) target(Ugin^ the Spirit Dragon|mygraveyard) text={T}: Add {1} to your mana pool. -- {T}: Add one mana of any color to your mana pool. Spend this mana only to cast a Dragon creature spell. -- {2}, {T}, Sacrifice Haven of the Spirit Dragon: Return target Dragon creature card or Ugin planeswalker card from your graveyard to your hand. type=Land [/card] @@ -25095,7 +25095,7 @@ type=Sorcery [card] name=Jace, Vryn's Prodigy auto={T}:draw:1 controller && ability$!name(Discard a card) reject notatarget(*|myhand)!$ controller restriction{type(*|mygraveyard)~lessthan~4} -auto={T}:draw:1 controller && ability$!name(Discard a card) reject notatarget(*|myhand)!$ controller && moveto(exile) and!( moveto(mybattlefield) and!( haste && counter(0/0,5,Loyalty) && flip(Jace, Telepath Unbound) )! )! restriction{type(*|mygraveyard)~morethan~3} +auto={T}:draw:1 controller && ability$!name(Discard a card) reject notatarget(*|myhand)!$ controller && moveto(exile) and!( moveto(mybattlefield) and!( haste && counter(0/0,5,Loyalty) && flip(Jace^ Telepath Unbound) )! )! restriction{type(*|mygraveyard)~morethan~3} text={T}: Draw a card, then discard a card. If there are five or more cards in your graveyard, exile Jace, Vryn's Prodigy, then return him to the battlefield transformed under his owner's control. mana={1}{U} type=Legendary Creature @@ -27087,7 +27087,7 @@ toughness=4 [/card] [card] name=Krav, the Unredeemed -auto=may name(Put partner on your hand) name(Put partner on your hand) moveto(myhand) target(Regna, the Redeemer|mylibrary) +auto=may name(Put partner on your hand) name(Put partner on your hand) moveto(myhand) target(Regna^ the Redeemer|mylibrary) auto={B}{S(creature|myBattlefield)}:name(Sacrifice 1 creature and target yourself) name(Sacrifice 1 creature and target yourself) all(this) counter(1/1,1) && life:1 controller && draw:1 controller auto={B}{S(creature|myBattlefield)}:name(Sacrifice 1 creature and target opponent) name(Sacrifice 1 creature and target opponent) all(this) counter(1/1,1) && life:1 opponent && draw:1 opponent auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 2 creatures and target yourself) name(Sacrifice 2 creatures and target yourself) all(this) counter(1/1,2) && life:2 controller && draw:2 controller @@ -28160,8 +28160,8 @@ type=Enchantment name=Liberating Combustion target=creature auto=damage:6 -auto=moveto(myhand) target(Chandra, Pyrogenius|mylibrary) && shuffle controller -auto=moveto(myhand) target(Chandra, Pyrogenius|mygraveyard) +auto=moveto(myhand) target(Chandra^ Pyrogenius|mylibrary) && shuffle controller +auto=moveto(myhand) target(Chandra^ Pyrogenius|mygraveyard) text=Liberating Combustion deals 6 damage to target creature. You may search your library and/or graveyard for a card named Chandra, Pyrogenius, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={4}{R} type=Sorcery @@ -28451,7 +28451,7 @@ toughness=3 [card] name=Liliana's Influence auto=counter(-1/-1,1) all(creature|opponentbattlefield) -auto=may moveto(myhand) target(Liliana, Death Wielder|mylibrary) +auto=may moveto(myhand) target(Liliana^ Death Wielder|mylibrary,mygraveyard) text=Put a -1/-1 counter on each creature you don't control. You may search your library and/or graveyard for a card named Liliana, Death Wielder, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={4}{B}{B} type=Sorcery @@ -28468,8 +28468,8 @@ type=Enchantment name=Liliana's Scorn target=creature auto=destroy -auto=choice name(Search Library) may moveto(myhand) target(Liliana, Death Mage|myLibrary) && shuffle -auto=choice name(Search Graveyard) may moveto(myhand) target(Liliana, Death Mage|myGraveyard) +auto=choice name(Search Library) may moveto(myhand) target(Liliana^ Death Mage|myLibrary) && shuffle +auto=choice name(Search Graveyard) may moveto(myhand) target(Liliana^ Death Mage|myGraveyard) text=Destroy target creature. You may search your library and/or graveyard for a card named Liliana, Death Mage, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={3}{B}{B} type=Sorcery @@ -30318,8 +30318,8 @@ toughness=3 name=Maze's End auto=tap(noevent) auto={T}:Add {1} -aicode=activate moveTo(myBattlefield) target(land[Gate]|myLibrary) -auto={H(this|mybattlefield)}{3}{T}:=name(search a gate) reveal:plibrarycount optionone name(choose gate) target(land[Gate]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield))! afterrevealedend revealend then aslongas(Selesnya Guildgate,Izzet Guildgate,Golgari Guildgate, Dimir Guildgate,Boros Guildgate,Simic Guildgate,Rakdos Guildgate,Orzhov Guildgate,Gruul Guildgate,Azorius Guildgate|myBattlefield) while wingame +aicode=activate +auto={3}{T}{H(this|mybattlefield)}{3}{T}:name(search a gate) target(land[Gate]|myLibrary) moveTo(myBattlefield) and!( if compare(diffcardcounttypegate)~morethan~9 then wingame controller )! text=Maze’s End enters the battlefield tapped. -- {T}:Add {C}. -- {3},{T},Return Maze’s End to its owner’s hand: Search your library for a Gate card, put it onto the battlefield, then shuffle your library. If you control ten or more Gates with different names, you win the game. type=Land [/card] @@ -32917,7 +32917,7 @@ toughness=2 [card] name=Nikara, Lair Scavenger abilities=menace,partner -auto=may moveto(myhand) target(Yannik, Scavenging Sentinel|mylibrary) +auto=may moveto(myhand) target(Yannik^ Scavenging Sentinel|mylibrary) auto=@movedTo(other creature[counter{1/1}]|nonbattlezone) from(mybattlefield):draw:1 && life:-1 controller text=Partner with Yannik, Scavenging Sentinel (When this creature enters the battlefield, target player may put Yannik into their hand from their library, then shuffle.) -- Menace -- Whenever another creature you control leaves the battlefield, if it had one or more counters on it, you draw a card and you lose 1 life. mana={2}{B} @@ -33872,8 +33872,8 @@ toughness=3 [card] name=Oko's Hospitality auto=lord(creature|battlefield) transforms((,setpower=3,settoughness=3)) ueot -auto=moveto(myhand) target(Oko, the Trickster|mylibrary) -auto=moveto(myhand) target(Oko, the Trickster|mygraveyard) +auto=moveto(myhand) target(Oko^ the Trickster|mylibrary) +auto=moveto(myhand) target(Oko^ the Trickster|mygraveyard) text=Creatures you control have base power and toughness 3/3 until end of turn. You may search your library and/or graveyard for a card named Oko, the Trickster, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={3}{G}{U} type=Instant @@ -34899,8 +34899,8 @@ toughness=2 [card] name=Pako, Arcane Retriever abilities=hiddenface,haste,partner -aicode=activate moveTo(myhand) target(Haldan, Avid Arcanist|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Haldan, Avid Arcanist|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Haldan, Avid Arcanist|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +aicode=activate moveTo(myhand) target(Haldan^ Avid Arcanist|mylibrary) +auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Haldan^ Avid Arcanist|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Haldan^ Avid Arcanist|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=@combat(attacking) source(this):NOTCODED text=Partner with Haldan, Avid Arcanist -- Haste -- Whenever Pako, Arcane Retriever attacks, exile the top card of each player’s library and put a fetch counter on each of them. Put a +1/+1 counter on Pako for each noncreature card exiled this way. mana={3}{R}{G} @@ -38620,12 +38620,12 @@ type=Sorcery [card] name=Regna, the Redeemer abilities=flying,partner -auto=may moveto(myhand) notatarget(krav, the unredeemed|mylibrary) +auto=may moveto(myhand) notatarget(krav^ the unredeemed|mylibrary) auto=@each endofturn restriction{compare(lifegain)~morethan~0}:create(warrior:creature warrior:1/1:white:)*2 text=Partner with Krav, the Unredeemed (When this creature enters the battlefield, target player may put Krav into their hand from their library, then shuffle.) -- Flying -- At the beginning of each end step, if your team gained life this turn, create two 1/1 white Warrior creature tokens. mana={5}{W} type=Legendary Creature -subtype=Angel Regna +subtype=Angel power=4 toughness=4 [/card] @@ -40395,8 +40395,8 @@ toughness=3 [/card] [card] name=Rowan's Stalwarts -auto=moveto(myhand) target(Rowan, Fearless Sparkmage|mylibrary) -auto=moveto(myhand) target(Rowan, Fearless Sparkmage|mygraveyard) +auto=moveto(myhand) target(Rowan^ Fearless Sparkmage|mylibrary) +auto=moveto(myhand) target(Rowan^ Fearless Sparkmage|mygraveyard) text=When Rowan's Stalwarts enters the battlefield, you may search your library and/or graveyard for a card named Rowan, Fearless Sparkmage, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={4}{R} type=Creature @@ -42831,8 +42831,8 @@ toughness=2 [card] name=Shabraz, the Skyshark abilities=hiddenface,partner -aicode=activate moveTo(myhand) target(Brallin, Skyshark Rider|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Brallin, Skyshark Rider|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Brallin, Skyshark Rider|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +aicode=activate moveTo(myhand) target(Brallin^ Skyshark Rider|mylibrary) +auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Brallin^ Skyshark Rider|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Brallin^ Skyshark Rider|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=@drawof(player:all(this) counter(1/1,1) && life:1 controller auto={WU}:target(creature[Human]) flying ueot text=Partner with Shabraz, the Skyshark (When this creature enters the battlefield, target player may put Shabraz into their hand from their library, then shuffle.) -- Whenever you discard a card, put a +1/+1 counter on Brallin, Skyshark Rider and it deals 1 damage to each opponent. -- {R}: Target Shark gains trample until end of turn. @@ -43952,8 +43952,8 @@ type=Instant [card] name=Silvar, Devourer of the Free abilities=hiddenface,menace,partner -aicode=activate moveTo(myhand) target(Trynn, Champion of Freedom|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Trynn, Champion of Freedom|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Trynn, Champion of Freedom|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +aicode=activate moveTo(myhand) target(Trynn^ Champion of Freedom|mylibrary) +auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Trynn^ Champion of Freedom|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Trynn^ Champion of Freedom|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto={S(Human|myBattlefield)}:all(this) counter(1/1) && indestructible ueot text=Partner with Trynn, Champion of Freedom (When this creature enters the battlefield, target player may put Trynn into their hand from their library, then shuffle.) -- Menace -- Sacrifice a Human: Put a +1/+1 counter on Silvar, Devourer of the Free. It gains indestructible until end of turn. mana={3}{B}{R} @@ -45508,8 +45508,8 @@ subtype=Equipment [/card] [card] name=Sorin's Guide -auto=may moveto(myhand) target(Sorin, Vampire Lord|mylibrary) -auto=may moveto(myhand) target(Sorin, Vampire Lord|mygraveyard) +auto=may moveto(myhand) target(Sorin^ Vampire Lord|mylibrary) +auto=may moveto(myhand) target(Sorin^ Vampire Lord|mygraveyard) text=When Sorin's Guide enters the battlefield, you may search your library and/or graveyard for a card named Sorin, Vampire Lord, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={3}{B}{B} type=Creature @@ -47992,7 +47992,7 @@ toughness=2 [/card] [card] name=Sun-Blessed Mount -auto=may moveto(myhand) target(Huatli, Dinosaur Knight|mylibrary,mygraveyard) +auto=may moveto(myhand) target(Huatli^ Dinosaur Knight|mylibrary,mygraveyard) text=When Sun-Blessed Mount enters the battlefield, you may search your library and/or graveyard for a card named Huatli, Dinosaur Knight, reveal it, then put it into your hand. If you searched your library this way, shuffle it. mana={3}{R}{W} type=Creature @@ -49412,8 +49412,8 @@ type=Enchantment [card] name=Teferi's Wavecaster abilities=flash -auto=choice name(Search Library) may moveto(myHand) target(Teferi, Timeless Voyager|myLibrary) && shuffle -auto=choice name(Search Graveyard) may moveto(myHand) target(Teferi, Timeless Voyager|myGraveyard) +auto=choice name(Search Library) may moveto(myHand) target(Teferi^ Timeless Voyager|myLibrary) && shuffle +auto=choice name(Search Graveyard) may moveto(myHand) target(Teferi^ Timeless Voyager|myGraveyard) text=Flash -- When Teferi's Wavecaster enters the battlefield, you may search your library and/or graveyard for a card named Teferi, Timeless Voyager, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={3}{U}{U} type=Creature @@ -49749,8 +49749,8 @@ toughness=4 name=Tezzeret's Betrayal target=creature auto=destroy -auto=choice name(Search Library) may moveto(myhand) target(Tezzeret, Master of Metal|myLibrary) && shuffle -auto=choice name(Search Graveyard) may moveto(myhand) target(Tezzeret, Master of Metal|myGraveyard) +auto=choice name(Search Library) may moveto(myhand) target(Tezzeret^ Master of Metal|myLibrary) && shuffle +auto=choice name(Search Graveyard) may moveto(myhand) target(Tezzeret^ Master of Metal|myGraveyard) text=Destroy target creature. You may search your library and/or graveyard for a card named Tezzeret, Master of Metal, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={3}{U}{B} type=Sorcery @@ -51385,7 +51385,7 @@ toughness=3 [card] name=Toothy, Imaginary Friend abilities=partner -auto=may moveto(myhand) notatarget(pir, imaginative rascal|mylibrary) +auto=may moveto(myhand) notatarget(pir^ imaginative rascal|mylibrary) auto=@drawof(player):counter(1/1) auto=@movedTo(this|nonbattlezone) from(myBattlefield):thisforeach(counter{1/1,1}) draw:1 controller text=Partner with Pir, Imaginative Rascal (When this creature enters the battlefield, target player may put Pir into their hand from their library, then shuffle.) -- Whenever you draw a card, put a +1/+1 counter on Toothy, Imaginary Friend. -- When Toothy leaves the battlefield, draw a card for each +1/+1 counter on it. @@ -52169,8 +52169,8 @@ toughness=3 [card] name=Trynn, Champion of Freedom abilities=hiddenface,partner -aicode=activate moveTo(myhand) target(Silvar, Devourer of the Free|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Silvar, Devourer of the Free|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Silvar, Devourer of the Free|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +aicode=activate moveTo(myhand) target(Silvar^ Devourer of the Free|mylibrary) +auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Silvar^ Devourer of the Free|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Silvar^ Devourer of the Free|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=@each my endofturn:if raid then token(Soldier Try) text=Partner with Silvar, Devourer of the Free (When this creature enters the battlefield, target player may put Silvar into their hand from their library, then shuffle.) -- At the beginning of your end step, if you attacked this turn, create a 1/1 white Human Soldier creature token. mana={3}{W} @@ -52567,8 +52567,8 @@ toughness=0 [card] name=Ukkima, Stalking Shadow abilities=hiddenface,unblockable,partner -aicode=activate moveTo(myhand) target(Cazur, Ruthless Stalker|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Cazur, Ruthless Stalker|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Cazur, Ruthless Stalker|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +aicode=activate moveTo(myhand) target(Cazur^ Ruthless Stalker|mylibrary) +auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Cazur^ Ruthless Stalker|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Cazur^ Ruthless Stalker|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=@movedto(this|nonbattlezone):damage:storedpower target(opponent) && life:storedpower controller text=Partner with Cazur, Ruthless Stalker (When this creature enters the battlefield, target player may put Cazur into their hand from their library, then shuffle.) -- Ukkima, Stalking Shadow can’t be blocked. -- When Ukkima leaves the battlefield, it deals X damage to target player and you gain X life, where X is its power. mana={1}{U}{B} @@ -53901,8 +53901,8 @@ type=Sorcery [/card] [card] name=Verdant Crescendo -aicode=activate target(Nissa, Nature's Artisan|mylibrary,mygraveyard) moveto(myhand) && shuffle -auto=reveal:plibrarycount optionone name(choose card) target(land[basic]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend && ability$!name(Search Nissa, Nature's Artisan) moveto(myhand) target(Nissa, Nature's Artisan|mylibrary,mygraveyard) && shuffle!$ controller +auto=target(land[basic]|mylibrary) moveto(mybattlefield) and!( tap(noevent) )! +auto=ability$!name(Search Nissa, Nature's Artisan) name(Search Nissa, Nature's Artisan) target(Nissa^ Nature's Artisan|mylibrary,mygraveyard) moveto(myhand) and!( shuffle )! !$ controller text=Search your library for a basic land card and put it onto the battlefield tapped. Search your library and graveyard for a card named Nissa, Nature's Artisan, reveal it, and put it into your hand. Then shuffle your library. mana={3}{G} type=Sorcery @@ -54357,7 +54357,7 @@ type=Instant [/card] [card] name=Visage of Bolas -auto=may moveto(myhand) target(Nicol Bolas, the Deceiver|mylibrary) +auto=may moveto(myhand) target(Nicol Bolas^ the Deceiver|mylibrary,mygraveyard) and!( shuffle )! auto={T}:Add{U} auto={T}:Add{B} auto={T}:Add{R} @@ -54839,7 +54839,7 @@ toughness=2 [card] name=Vraska's Scorn auto=life:-4 opponent -auto=may name(Move Vraska, Scheming Gorgon to hand) name(Move Vraska, Scheming Gorgon to hand) moveto(myhand) target(Vraska, Scheming Gorgon|mylibrary,mygraveyard) && shuffle +auto=may name(Move Vraska, Scheming Gorgon to hand) name(Move Vraska, Scheming Gorgon to hand) target(Vraska^ Scheming Gorgon|mylibrary,mygraveyard) moveto(myhand) and!( shuffle )! text=Target opponent loses 4 life. You may search your library and/or graveyard for a card named Vraska, Scheming Gorgon, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={2}{B}{B} type=Sorcery @@ -56537,8 +56537,7 @@ toughness=5 [card] name=Yanling's Harbinger abilities=flying -auto=moveto(myhand) target(Mu Yanling, Celestial Wind|mylibrary) -auto=moveto(myhand) target(Mu Yanling, Celestial Wind|mygraveyard) +auto=target(Mu Yanling^ Celestial Wind|mylibrary,mygraveyard) moveto(myhand) and!( shuffle )! text=Flying -- When Yanling's Harbinger enters the battlefield, you may search your library and/or graveyard for a card named Mu Yanling, Celestial Wind, reveal it, and put it into your hand. If you search your library this way, shuffle it. mana={3}{U}{U} type=Creature @@ -56549,8 +56548,28 @@ toughness=4 [card] name=Yannik, Scavenging Sentinel abilities=vigilance,partner -auto=may moveto(myhand) target(Nikara, Lair Scavenger|mylibrary) -auto=(blink)forsrc target(other creature|mybattlefield) && target(creature) counter(1/1,storedpower) +auto=may moveto(myhand) target(Nikara^ Lair Scavenger|mylibrary) +auto=if type(creature[power=0]|myBattlefield)~morethan~0 then choice name(Exile creature with power 0) name(Exile creature with power 0) (blink)forsrc target(other creature[power=0]|mybattlefield) +auto=if type(creature[power=1]|myBattlefield)~morethan~0 then choice name(Exile creature with power 1) name(Exile creature with power 1) (blink)forsrc target(other creature[power=1]|mybattlefield) && ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=2]|myBattlefield)~morethan~0 then choice name(Exile creature with power 2) name(Exile creature with power 2) (blink)forsrc target(other creature[power=2]|mybattlefield) && thisforeach(variable{2}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=3]|myBattlefield)~morethan~0 then choice name(Exile creature with power 3) name(Exile creature with power 3) (blink)forsrc target(other creature[power=3]|mybattlefield) && thisforeach(variable{3}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=4]|myBattlefield)~morethan~0 then choice name(Exile creature with power 4) name(Exile creature with power 4) (blink)forsrc target(other creature[power=4]|mybattlefield) && thisforeach(variable{4}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=5]|myBattlefield)~morethan~0 then choice name(Exile creature with power 5) name(Exile creature with power 5) (blink)forsrc target(other creature[power=5]|mybattlefield) && thisforeach(variable{5}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=6]|myBattlefield)~morethan~0 then choice name(Exile creature with power 6) name(Exile creature with power 6) (blink)forsrc target(other creature[power=6]|mybattlefield) && thisforeach(variable{6}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=7]|myBattlefield)~morethan~0 then choice name(Exile creature with power 7) name(Exile creature with power 7) (blink)forsrc target(other creature[power=7]|mybattlefield) && thisforeach(variable{7}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=8]|myBattlefield)~morethan~0 then choice name(Exile creature with power 8) name(Exile creature with power 8) (blink)forsrc target(other creature[power=8]|mybattlefield) && thisforeach(variable{8}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=9]|myBattlefield)~morethan~0 then choice name(Exile creature with power 9) name(Exile creature with power 9) (blink)forsrc target(other creature[power=9]|mybattlefield) && thisforeach(variable{9}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=10]|myBattlefield)~morethan~0 then choice name(Exile creature with power 10) name(Exile creature with power 10) (blink)forsrc target(other creature[power=10]|mybattlefield) && thisforeach(variable{10}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=11]|myBattlefield)~morethan~0 then choice name(Exile creature with power 11) name(Exile creature with power 11) (blink)forsrc target(other creature[power=11]|mybattlefield) && thisforeach(variable{11}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=12]|myBattlefield)~morethan~0 then choice name(Exile creature with power 12) name(Exile creature with power 12) (blink)forsrc target(other creature[power=12]|mybattlefield) && thisforeach(variable{12}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=13]|myBattlefield)~morethan~0 then choice name(Exile creature with power 13) name(Exile creature with power 13) (blink)forsrc target(other creature[power=13]|mybattlefield) && thisforeach(variable{13}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=14]|myBattlefield)~morethan~0 then choice name(Exile creature with power 14) name(Exile creature with power 14) (blink)forsrc target(other creature[power=14]|mybattlefield) && thisforeach(variable{14}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=15]|myBattlefield)~morethan~0 then choice name(Exile creature with power 15) name(Exile creature with power 15) (blink)forsrc target(other creature[power=15]|mybattlefield) && thisforeach(variable{15}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=16]|myBattlefield)~morethan~0 then choice name(Exile creature with power 16) name(Exile creature with power 16) (blink)forsrc target(other creature[power=16]|mybattlefield) && thisforeach(variable{16}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=17]|myBattlefield)~morethan~0 then choice name(Exile creature with power 17) name(Exile creature with power 17) (blink)forsrc target(other creature[power=17]|mybattlefield) && thisforeach(variable{17}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=18]|myBattlefield)~morethan~0 then choice name(Exile creature with power 18) name(Exile creature with power 18) (blink)forsrc target(other creature[power=18]|mybattlefield) && thisforeach(variable{18}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power=19]|myBattlefield)~morethan~0 then choice name(Exile creature with power 19) name(Exile creature with power 19) (blink)forsrc target(other creature[power=19]|mybattlefield) && thisforeach(variable{19}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller +auto=if type(creature[power>=20]|myBattlefield)~morethan~0 then choice name(Exile creature with power 20) name(Exile creature with power 20) (blink)forsrc target(other creature[power>=20]|mybattlefield) && thisforeach(variable{20}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller text=Partner with Nikara, Lair Scavenger -- Vigilance -- When Yannik, Scavenging Sentinel enters the battlefield, exile another creature you control until Yannik leaves the battlefield. When you do, distribute X +1/+1 counters among any number of target creatures, where X is the exiled creature's power. mana={2}{G}{W} type=Legendary Creature diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index 275d137c9..bdb6e834e 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -15510,10 +15510,7 @@ type=Sorcery [card] name=Budoka Gardener doublefaced=kamiflip -auto={T}:name(Put land in play) name(Put land in play) target(land|myhand) moveto(mybattlefield) && if type(land|mybattlefield)~morethan~9 then all(this) flip(Dokai, Weaver of Life) else all(this) counter(0/0.1.BudokaFlp) -auto={T}:name(Don't put land in play) name(Don't put land in play) if type(land|mybattlefield)~lessthan~10 then counter(0/0.1.BudokaFlp) else flip(Dokai, Weaver of Life) && counter(0/0.-1.BudokaFlp) -auto=@movedto(land|mybattlefield) restriction{compare(type:land:mybattlefield)~morethan~9}:this(counter{0/0.1.BudokaFlp}>0) flip(Dokai, Weaver of Life) && counter(0/0.-1.BudokaFlp) -auto=@each endofturn:this(counter{0/0.1.BudokaFlp}>0) counter(0/0.-1.BudokaFlp) +auto={T}:all(this) transforms((,newability[if type(land|mybattlefield)~morethan~9 then flip(Dokai^ Weaver of Life)],newability[may moveto(mybattlefield) notatarget(land|myhand)],newability[@movedto(land|mybattlefield) restriction{compare(type:land:mybattlefield)~morethan~9}:flip(Dokai^ Weaver of Life)])) ueot text={T}: You may put a land card from your hand onto the battlefield. If you control ten or more lands, flip Budoka Gardener. mana={1}{G} type=Creature @@ -37415,7 +37412,7 @@ type=Land name=Everglove Courier abilities=doesnotuntap auto=@each my untap sourcetap:may untap -auto={2}{g}{t}:target(elf) grant +2/+2 grantend +auto={2}{g}{t}:target(elf) grant transforms((,newability[2/2],newability[trample])) grantend text=You may choose not to untap Everglove Courier during your untap step. -- {2}{G}, {T}: Target Elf creature gets +2/+2 and has trample for as long as Everglove Courier remains tapped. mana={2}{G} type=Creature diff --git a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt index ceaa3c01c..4437598b0 100644 --- a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt +++ b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt @@ -706,7 +706,7 @@ subtype=Dovin name=Dovin, Grand Arbiter auto=counter(0/0,3,loyalty) aicode=activate target(*[zpos<=10]|mylibrary) moveto(myhand) -auto={C(0/0,1,Loyalty)}:name(+1: Whenever a creature combat damage, put loyalty counter) all(creature|myBattlefield) transforms((,newability[@combatdamaged(player) from(this):counter(0/0,1,Loyalty) notAtarget(Dovin, Grand Arbiter|myBattlefield)])) ueot oneshot +auto={C(0/0,1,Loyalty)}:name(+1: Whenever a creature combat damage, put loyalty counter) all(creature|myBattlefield) transforms((,newability[@combatdamaged(player) from(this):counter(0/0,1,Loyalty) notAtarget(Dovin^ Grand Arbiter|myBattlefield)])) ueot oneshot auto={C(0/0,-1,Loyalty)}:name(-1: Create a 1/1 Thopter and gain 1 life) token(Thopter,Artifact Creature Thopter,1/1,flying) && life:1 controller auto={C(0/0,-7,Loyalty)}:name(-7: Look at the top ten and put three in your hand) name(Look ten cards from top of your Library) reveal:10 optionone name(Get three cards) target(<3>*|reveal) moveto(hand) optiononeend optiontwo all(*|reveal) bottomoflibrary optiontwoend revealend text=+1: Until end of turn, whenever a creature you control deals combat damage to a player, put a loyalty counter on Dovin, Grand Arbiter. -- −1: Create a 1/1 colorless Thopter artifact creature token with flying. You gain 1 life. -- −7: Look at the top ten cards of your library. Put three of them into your hand and the rest on the bottom of your library in a random order. diff --git a/projects/mtg/bin/Res/sets/primitives/unsupported.txt b/projects/mtg/bin/Res/sets/primitives/unsupported.txt index 8e6bf672c..9d270ce1a 100644 --- a/projects/mtg/bin/Res/sets/primitives/unsupported.txt +++ b/projects/mtg/bin/Res/sets/primitives/unsupported.txt @@ -9184,7 +9184,7 @@ toughness=2 [/card] [card] name=Pir, Imaginative Rascal -auto=may name(Put partner on your hand) name(Put partner on your hand) moveto(myhand) target(Toothy, Imaginary Friend|mylibrary) +auto=may name(Put partner on your hand) name(Put partner on your hand) moveto(myhand) target(Toothy^ Imaginary Friend|mylibrary) text=Partner with Toothy, Imaginary Friend (When this creature enters the battlefield, target player may put Toothy into their hand from their library, then shuffle.) -- If one or more counters would be put on a permanent your team controls, that many plus one of each of those kinds of counters are put on that permanent instead. mana={2}{G} type=Legendary Creature diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index af9263ada..8f021d54c 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -2874,6 +2874,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG } string tokenDesc = splitToken[1]; + replace(tokenDesc.begin(), tokenDesc.end(), '^', ','); // To allow the usage of ^ instead of , char (e.g. using token keyword inside transforms) vector tokenParameters = split(tokenDesc, ','); //lets try finding a token by card name. if (splitToken[1].size() && (tokenParameters.size() ==1||tokenParameters.size() ==2)) @@ -3800,6 +3801,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG vector splitRampage = parseBetween(s, "rampage(", ")"); if (splitRampage.size()) { + replace(splitRampage[1].begin(), splitRampage[1].end(), '^', ','); // To allow the usage of ^ instead of , char (e.g. using rampage keyword inside transforms) vector rampageParameters = split(splitRampage[1], ','); int power, toughness; if (!parsePowerToughness(rampageParameters[0], &power, &toughness)) @@ -3885,6 +3887,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG if (splitPhaseAlter.size()) { string power, toughness; + replace(splitPhaseAlter[1].begin(), splitPhaseAlter[1].end(), '^', ','); // To allow the usage of ^ instead of , char (e.g. using phasealter keyword inside transforms) vectorsplitPhaseAlter2 = split(splitPhaseAlter[1],','); if(splitPhaseAlter2.size() < 3) return NULL; @@ -4025,6 +4028,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG vector splitBecomes = parseBetween(s, "becomes(", ")"); if (splitBecomes.size()) { + replace(splitBecomes[1].begin(), splitBecomes[1].end(), '^', ','); // To allow the usage of ^ instead of , char (e.g. using becomes keyword inside transforms) vector becomesParameters = split(splitBecomes[1], ','); string stypes = becomesParameters[0]; string newPower = ""; @@ -4253,6 +4257,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG { /*vectorFlipStats = split(splitFlipStat[1],'%');*/ flipStats = splitFlipStat[1]; + replace(flipStats.begin(), flipStats.end(), '^', ','); // To allow the usage of ^ instead of , char (e.g. using flip keyword inside transforms) } vector splitType = parseBetween(s, "forcetype(", ")", true); // Added to flip instants and sorceries as permanents (es. Zendikar Rising Modal Double Faced cards). string forcetype = ""; diff --git a/projects/mtg/src/TargetChooser.cpp b/projects/mtg/src/TargetChooser.cpp index 316245973..02bfd61d8 100644 --- a/projects/mtg/src/TargetChooser.cpp +++ b/projects/mtg/src/TargetChooser.cpp @@ -391,6 +391,7 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta } //Advanced cards caracteristics ? + replace(typeName.begin(), typeName.end(), '^', ','); // To allow the usage of ^ instead of , char (e.g. target card with ',' char in name) found = typeName.find("["); if (found != string::npos) {