Completed STX set, fixed/added primitives, improved Android downloader, implemented the usage of ^ instead of , char (e.g. target multiple zones within transforms keyword), improved the code to avoid the multiple triggers in case of abilities gained from other cards (e.g. Kasmina, Enigma Sage).

This commit is contained in:
Vittorio Alfieri
2021-04-26 19:23:31 +02:00
parent 68a64238cb
commit e265dc3e7f
8 changed files with 2662 additions and 108 deletions
@@ -1822,8 +1822,10 @@ public class ImgDownloader {
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/8/c/8cfd0887-0c83-4b33-a85e-8b8ec5bf758d.jpg?1617453475"; cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/8/c/8cfd0887-0c83-4b33-a85e-8b8ec5bf758d.jpg?1617453475";
else if(id.equals("513652")) else if(id.equals("513652"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/6/5/65008352-bc7e-40b2-a832-b46813e5dc4c.jpg?1617453527"; cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/6/5/65008352-bc7e-40b2-a832-b46813e5dc4c.jpg?1617453527";
else if(id.equals("513653")) else if(id.equals("513652t") || id.equals("513638t") || id.equals("513543t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/6/5/65008352-bc7e-40b2-a832-b46813e5dc4c.jpg?1617453527"; cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/d/0/d0ddbe3e-4a66-494d-9304-7471232549bf.jpg?1617626099";
else if(id.equals("513634t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/9/1/910f48ab-b04e-4874-b31d-a86a7bc5af14.jpg?1617626097";
return cardurl; return cardurl;
} }
@@ -2702,7 +2704,8 @@ public class ImgDownloader {
if (rarity == null || !rarity.equals("t") || set.equals("DKA") || set.equals("EMN") || if (rarity == null || !rarity.equals("t") || set.equals("DKA") || set.equals("EMN") ||
set.equals("ISD") || set.equals("ORI") || set.equals("RIX") || set.equals("V17") || set.equals("ISD") || set.equals("ORI") || set.equals("RIX") || set.equals("V17") ||
set.equals("UNH") || set.equals("XLN") || set.equals("SOI") || set.equals("SOK") || set.equals("UNH") || set.equals("XLN") || set.equals("SOI") || set.equals("SOK") ||
set.equals("BOK") || set.equals("CHK") || set.equals("ZNR") || set.equals("KHM")) set.equals("BOK") || set.equals("CHK") || set.equals("ZNR") || set.equals("KHM") ||
set.equals("STX"))
rarity = ""; rarity = "";
if(id != null && (id.equals("209162") || id.equals("209163") || id.equals("401721") || id.equals("401722") || id.equals("491633"))) if(id != null && (id.equals("209162") || id.equals("209163") || id.equals("401721") || id.equals("401722") || id.equals("491633")))
rarity = "t"; rarity = "t";
@@ -2717,6 +2720,14 @@ public class ImgDownloader {
mappa.put("503837t", "Koma's Coil"); mappa.put("503837t", "Koma's Coil");
if(id.equals("503841")) if(id.equals("503841"))
mappa.put("503841t", "Shard"); mappa.put("503841t", "Shard");
if(id.equals("513652"))
mappa.put("513652t", "Pest");
if(id.equals("513638"))
mappa.put("513638t", "Pest");
if(id.equals("513543"))
mappa.put("513543t", "Pest");
if(id.equals("513634"))
mappa.put("513634t", "Fractal");
if (id.equals("114921")) { if (id.equals("114921")) {
mappa.put("11492111t", "Citizen"); mappa.put("11492111t", "Citizen");
mappa.put("11492112t", "Camarid"); mappa.put("11492112t", "Camarid");
+33 -18
View File
@@ -3,7 +3,7 @@ author=Wagic Team
name=Strixhaven: School of Mages name=Strixhaven: School of Mages
orderindex=EXP-ZZI.STX orderindex=EXP-ZZI.STX
year=2021-04-23 year=2021-04-23
total=337 total=340
[/meta] [/meta]
[card] [card]
primitive=Pest primitive=Pest
@@ -16,6 +16,11 @@ id=-513728
rarity=T rarity=T
[/card] [/card]
[card] [card]
primitive=Inkling
id=-513722
rarity=T
[/card]
[card]
primitive=Spirit primitive=Spirit
id=-513712 id=-513712
rarity=T rarity=T
@@ -151,6 +156,11 @@ id=-513585
rarity=T rarity=T
[/card] [/card]
[card] [card]
primitive=Inkling
id=-513566
rarity=T
[/card]
[card]
primitive=Pest primitive=Pest
id=-513563 id=-513563
rarity=T rarity=T
@@ -161,6 +171,11 @@ id=-513550
rarity=T rarity=T
[/card] [/card]
[card] [card]
primitive=Pest
id=-513543
rarity=T
[/card]
[card]
primitive=Fractal primitive=Fractal
id=-513529 id=-513529
rarity=T rarity=T
@@ -181,7 +196,7 @@ id=-513502
rarity=T rarity=T
[/card] [/card]
[card] [card]
primitive=Elemental primitive=Inkling
id=-513481 id=-513481
rarity=T rarity=T
[/card] [/card]
@@ -218,7 +233,7 @@ rarity=R
[card] [card]
primitive=Explore the Vastlands primitive=Explore the Vastlands
id=513483 id=513483
rarity=R rarity=T
[/card] [/card]
[card] [card]
primitive=Academic Probation primitive=Academic Probation
@@ -928,7 +943,7 @@ rarity=R
[card] [card]
primitive=Echoing Equation primitive=Echoing Equation
id=513625 id=513625
rarity=R rarity=T
[/card] [/card]
[card] [card]
primitive=Blex, Vexing Pest primitive=Blex, Vexing Pest
@@ -938,7 +953,7 @@ rarity=M
[card] [card]
primitive=Search for Blex primitive=Search for Blex
id=513627 id=513627
rarity=M rarity=T
[/card] [/card]
[card] [card]
primitive=Extus, Oriq Overlord primitive=Extus, Oriq Overlord
@@ -948,7 +963,7 @@ rarity=M
[card] [card]
primitive=Awaken the Blood Avatar primitive=Awaken the Blood Avatar
id=513629 id=513629
rarity=M rarity=T
[/card] [/card]
[card] [card]
primitive=Flamescroll Celebrant primitive=Flamescroll Celebrant
@@ -958,7 +973,7 @@ rarity=R
[card] [card]
primitive=Revel in Silence primitive=Revel in Silence
id=513631 id=513631
rarity=R rarity=T
[/card] [/card]
[card] [card]
primitive=Jadzi, Oracle of Arcavios primitive=Jadzi, Oracle of Arcavios
@@ -968,7 +983,7 @@ rarity=M
[card] [card]
primitive=Journey to the Oracle primitive=Journey to the Oracle
id=513633 id=513633
rarity=M rarity=T
[/card] [/card]
[card] [card]
primitive=Kianne, Dean of Substance primitive=Kianne, Dean of Substance
@@ -978,7 +993,7 @@ rarity=R
[card] [card]
primitive=Imbraham, Dean of Theory primitive=Imbraham, Dean of Theory
id=513635 id=513635
rarity=R rarity=T
[/card] [/card]
[card] [card]
primitive=Mila, Crafty Companion primitive=Mila, Crafty Companion
@@ -988,7 +1003,7 @@ rarity=M
[card] [card]
primitive=Lukka, Wayward Bonder primitive=Lukka, Wayward Bonder
id=513637 id=513637
rarity=M rarity=T
[/card] [/card]
[card] [card]
primitive=Pestilent Cauldron primitive=Pestilent Cauldron
@@ -998,7 +1013,7 @@ rarity=R
[card] [card]
primitive=Restorative Burst primitive=Restorative Burst
id=513639 id=513639
rarity=R rarity=T
[/card] [/card]
[card] [card]
primitive=Plargg, Dean of Chaos primitive=Plargg, Dean of Chaos
@@ -1008,7 +1023,7 @@ rarity=R
[card] [card]
primitive=Augusta, Dean of Order primitive=Augusta, Dean of Order
id=513641 id=513641
rarity=R rarity=T
[/card] [/card]
[card] [card]
primitive=Rowan, Scholar of Sparks primitive=Rowan, Scholar of Sparks
@@ -1018,7 +1033,7 @@ rarity=M
[card] [card]
primitive=Will, Scholar of Frost primitive=Will, Scholar of Frost
id=513643 id=513643
rarity=M rarity=T
[/card] [/card]
[card] [card]
primitive=Selfless Glyphweaver primitive=Selfless Glyphweaver
@@ -1028,7 +1043,7 @@ rarity=R
[card] [card]
primitive=Deadly Vanity primitive=Deadly Vanity
id=513645 id=513645
rarity=R rarity=T
[/card] [/card]
[card] [card]
primitive=Shaile, Dean of Radiance primitive=Shaile, Dean of Radiance
@@ -1038,7 +1053,7 @@ rarity=R
[card] [card]
primitive=Embrose, Dean of Shadow primitive=Embrose, Dean of Shadow
id=513647 id=513647
rarity=R rarity=T
[/card] [/card]
[card] [card]
primitive=Torrent Sculptor primitive=Torrent Sculptor
@@ -1048,7 +1063,7 @@ rarity=R
[card] [card]
primitive=Flamethrower Sonata primitive=Flamethrower Sonata
id=513649 id=513649
rarity=R rarity=T
[/card] [/card]
[card] [card]
primitive=Uvilda, Dean of Perfection primitive=Uvilda, Dean of Perfection
@@ -1058,7 +1073,7 @@ rarity=R
[card] [card]
primitive=Nassari, Dean of Expression primitive=Nassari, Dean of Expression
id=513651 id=513651
rarity=R rarity=T
[/card] [/card]
[card] [card]
primitive=Valentin, Dean of the Vein primitive=Valentin, Dean of the Vein
@@ -1068,7 +1083,7 @@ rarity=R
[card] [card]
primitive=Lisette, Dean of the Root primitive=Lisette, Dean of the Root
id=513653 id=513653
rarity=R rarity=T
[/card] [/card]
[card] [card]
primitive=Aether Helix primitive=Aether Helix
File diff suppressed because it is too large Load Diff
+26 -33
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 programatically so the other comments are removed except for AUTO_DEFINE - Vitty85 30-11-2020 #I sorted this programatically so the other comments are removed except for AUTO_DEFINE - Vitty85 25-04-2021
[card] [card]
name=Abandon Reason name=Abandon Reason
target=<upto:2>creature target=<upto:2>creature
@@ -1975,7 +1975,7 @@ type=Enchantment
[/card] [/card]
[card] [card]
name=Ajani's Pridemate name=Ajani's Pridemate
auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):counter(1/1,1) auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection;-Honor Troll]):counter(1/1,1)
text=Whenever you gain life, put a +1/+1 counter on Ajani's Pridemate. text=Whenever you gain life, put a +1/+1 counter on Ajani's Pridemate.
mana={1}{W} mana={1}{W}
type=Creature type=Creature
@@ -3466,8 +3466,7 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Ancient Amphitheater name=Ancient Amphitheater
auto=tap(noevent) auto=if type(*[giant]|myhand)~equalto~0 then tap(noevent)
auto=aslongas(giant|myHand) untap
auto={T}:Add{R} auto={T}:Add{R}
auto={T}:Add{W} auto={T}:Add{W}
text=As Ancient Amphitheater enters the battlefield, you may reveal a Giant card from your hand. If you don't, Ancient Amphitheater enters the battlefield tapped. -- {T}: Add {R} or {W} to your mana pool. text=As Ancient Amphitheater enters the battlefield, you may reveal a Giant card from your hand. If you don't, Ancient Amphitheater enters the battlefield tapped. -- {T}: Add {R} or {W} to your mana pool.
@@ -5144,7 +5143,7 @@ toughness=4
[card] [card]
name=Archangel of Thune name=Archangel of Thune
abilities=flying,lifelink abilities=flying,lifelink
auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):all(creature|mybattlefield) counter(1/1,1) auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection;-Honor Troll]):all(creature|mybattlefield) counter(1/1,1)
text=Flying. -- Lifelink. -- Whenever you gain life, put a +1/+1 counter on each creature you control. text=Flying. -- Lifelink. -- Whenever you gain life, put a +1/+1 counter on each creature you control.
mana={3}{W}{W} mana={3}{W}{W}
type=Creature type=Creature
@@ -6907,8 +6906,7 @@ toughness=1
[/card] [/card]
[card] [card]
name=Auntie's Hovel name=Auntie's Hovel
auto=tap(noevent) auto=if type(*[goblin]|myhand)~equalto~0 then tap(noevent)
auto=aslongas(goblin|myHand) untap
auto={T}:Add{B} auto={T}:Add{B}
auto={T}:Add{R} auto={T}:Add{R}
text=As Auntie's Hovel enters the battlefield, you may reveal a Goblin card from your hand. If you don't, Auntie's Hovel enters the battlefield tapped. -- {T}: Add {B} or {R} to your mana pool. text=As Auntie's Hovel enters the battlefield, you may reveal a Goblin card from your hand. If you don't, Auntie's Hovel enters the battlefield tapped. -- {T}: Add {B} or {R} to your mana pool.
@@ -12219,7 +12217,7 @@ type=Enchantment
[/card] [/card]
[card] [card]
name=Bloodbond Vampire name=Bloodbond Vampire
auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):counter(1/1,1) auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection;-Honor Troll]):counter(1/1,1)
text=Whenever you gain life, put a +1/+1 counter on Bloodbond Vampire. text=Whenever you gain life, put a +1/+1 counter on Bloodbond Vampire.
mana={2}{B}{B} mana={2}{B}{B}
type=Creature type=Creature
@@ -19444,7 +19442,7 @@ toughness=2
[/card] [/card]
[card] [card]
name=Choked Estuary name=Choked Estuary
auto=aslongas(island,swamp|myhand) tap(noevent) <1 auto=if type(*[island;swamp]|myhand)~equalto~0 then tap(noevent)
auto={T}:add{U} auto={T}:add{U}
auto={T}:add{B} auto={T}:add{B}
text=As Choked Estuary enters the battlefield, you may reveal an Island or Swamp card from your hand. If you don't, Choked Estuary enters the battlefield tapped. -- {T}: Add {U} or {B} to your mana pool. text=As Choked Estuary enters the battlefield, you may reveal an Island or Swamp card from your hand. If you don't, Choked Estuary enters the battlefield tapped. -- {T}: Add {U} or {B} to your mana pool.
@@ -20323,7 +20321,7 @@ toughness=1
[card] [card]
name=Cliffhaven Vampire name=Cliffhaven Vampire
abilities=flying abilities=flying
auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):life:-1 opponent auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection;-Honor Troll]):life:-1 opponent
text=Flying -- Whenever you gain life, each opponent loses 1 life. text=Flying -- Whenever you gain life, each opponent loses 1 life.
mana={2}{W}{B} mana={2}{W}{B}
type=Creature type=Creature
@@ -32126,7 +32124,7 @@ toughness=4
[card] [card]
name=Drogskol Reaver name=Drogskol Reaver
abilities=flying,double strike,lifelink abilities=flying,double strike,lifelink
auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):draw:1 controller auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection;-Honor Troll]):draw:1 controller
text=Flying, double strike, lifelink -- Whenever you gain life, draw a card. text=Flying, double strike, lifelink -- Whenever you gain life, draw a card.
mana={5}{W}{U} mana={5}{W}{U}
type=Creature type=Creature
@@ -41212,8 +41210,7 @@ toughness=1
[/card] [/card]
[card] [card]
name=Flamekin Village name=Flamekin Village
auto=tap(noevent) auto=if type(*[elemental]|myhand)~equalto~0 then tap(noevent)
auto=aslongas(Elemental|myHand) untap
auto={T}:Add{r} auto={T}:Add{r}
auto={r}{t}:target(creature) haste ueot auto={r}{t}:target(creature) haste ueot
text=As Flamekin Village enters the battlefield, you may reveal an Elemental card from your hand. If you don't, Flamekin Village enters the battlefield tapped. -- {T}: Add {R} to your mana pool. -- {R}, {T}: Target creature gains haste until end of turn. text=As Flamekin Village enters the battlefield, you may reveal an Elemental card from your hand. If you don't, Flamekin Village enters the battlefield tapped. -- {T}: Add {R} to your mana pool. -- {R}, {T}: Target creature gains haste until end of turn.
@@ -42707,7 +42704,7 @@ toughness=1
[/card] [/card]
[card] [card]
name=Foreboding Ruins name=Foreboding Ruins
auto=aslongas(mountain,swamp|myhand) tap(noevent) <1 auto=if type(*[mountain;swamp]|myhand)~equalto~0 then tap(noevent)
auto={T}:add{B} auto={T}:add{B}
auto={T}:add{R} auto={T}:add{R}
text=As Foreboding Ruins enters the battlefield, you may reveal a Swamp or Mountain card from your hand. If you don't, Foreboding Ruins enters the battlefield tapped. -- {T}: Add {B} or {R} to your mana pool. text=As Foreboding Ruins enters the battlefield, you may reveal a Swamp or Mountain card from your hand. If you don't, Foreboding Ruins enters the battlefield tapped. -- {T}: Add {B} or {R} to your mana pool.
@@ -42962,7 +42959,7 @@ toughness=6
[/card] [/card]
[card] [card]
name=Fortified Village name=Fortified Village
auto=aslongas(forest,plains|myhand) tap(noevent) <1 auto=if type(*[plains;forest]|myhand)~equalto~0 then tap(noevent)
auto={T}:add{G} auto={T}:add{G}
auto={T}:add{W} auto={T}:add{W}
text=As Fortified Village enters the battlefield, you may reveal a Forest or Plains card from your hand. If you don't, Fortified Village enters the battlefield tapped. -- {T}: Add {G} or {W} to your mana pool. text=As Fortified Village enters the battlefield, you may reveal a Forest or Plains card from your hand. If you don't, Fortified Village enters the battlefield tapped. -- {T}: Add {G} or {W} to your mana pool.
@@ -44475,7 +44472,7 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Game Trail name=Game Trail
auto=aslongas(mountain,forest|myhand) tap(noevent) <1 auto=if type(*[mountain;forest]|myhand)~equalto~0 then tap(noevent)
auto={T}:add{R} auto={T}:add{R}
auto={T}:add{G} auto={T}:add{G}
text=As Game Trail enters the battlefield, you may reveal a Mountain or Forest card from your hand. If you don't, Game Trail enters the battlefield tapped. -- {T}: Add {R} or {G} to your mana pool. text=As Game Trail enters the battlefield, you may reveal a Mountain or Forest card from your hand. If you don't, Game Trail enters the battlefield tapped. -- {T}: Add {R} or {G} to your mana pool.
@@ -46418,8 +46415,7 @@ toughness=3
[/card] [/card]
[card] [card]
name=Gilt-Leaf Palace name=Gilt-Leaf Palace
auto=tap(noevent) auto=if type(*[elf]|myhand)~equalto~0 then tap(noevent)
auto=aslongas(elf|myHand) untap
auto={T}:Add{B} auto={T}:Add{B}
auto={T}:Add{G} auto={T}:Add{G}
text=As Gilt-Leaf Palace enters the battlefield, you may reveal an Elf card from your hand. If you don't, Gilt-Leaf Palace enters the battlefield tapped. -- {T}: Add {B} or {G} to your mana pool. text=As Gilt-Leaf Palace enters the battlefield, you may reveal an Elf card from your hand. If you don't, Gilt-Leaf Palace enters the battlefield tapped. -- {T}: Add {B} or {G} to your mana pool.
@@ -61152,7 +61148,7 @@ toughness=2
[/card] [/card]
[card] [card]
name=Kalastria Nightwatch name=Kalastria Nightwatch
auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):flying ueot auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection;-Honor Troll]):flying ueot
text=Whenever you gain life, Kalastria Nightwatch gains flying until end of turn. text=Whenever you gain life, Kalastria Nightwatch gains flying until end of turn.
mana={4}{B} mana={4}{B}
type=Creature type=Creature
@@ -61549,7 +61545,7 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Karlov of the Ghost Council name=Karlov of the Ghost Council
auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):counter(1/1,2) auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection;-Honor Troll]):counter(1/1,2)
auto={W}{B}{C(1/1,-6)}:moveto(exile) target(creature) auto={W}{B}{C(1/1,-6)}:moveto(exile) target(creature)
text=Whenever you gain life, put two +1/+1 counters on Karlov of the Ghost Council. -- {W}{B}, Remove six +1/+1 counters from Karlov of the Ghost Council: Exile target creature. text=Whenever you gain life, put two +1/+1 counters on Karlov of the Ghost Council. -- {W}{B}, Remove six +1/+1 counters from Karlov of the Ghost Council: Exile target creature.
mana={W}{B} mana={W}{B}
@@ -70056,7 +70052,7 @@ toughness=1
[card] [card]
name=Malakir Familiar name=Malakir Familiar
abilities=flying,deathtouch abilities=flying,deathtouch
auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):1/1 ueot auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection;-Honor Troll]):1/1 ueot
text=Flying, deathtouch -- Whenever you gain life, Malakir Familiar gets +1/+1 until end of turn. text=Flying, deathtouch -- Whenever you gain life, Malakir Familiar gets +1/+1 until end of turn.
mana={2}{B} mana={2}{B}
type=Creature type=Creature
@@ -77134,7 +77130,7 @@ toughness=4
[/card] [/card]
[card] [card]
name=Murmuring Bosk name=Murmuring Bosk
auto=if type(treefolk|myhand)~lessthan~1 then tap(noevent) auto=if type(treefolk|myhand)~equalto~0 then tap(noevent)
auto={T}:Add{W} and!( damage:1 controller )! auto={T}:Add{W} and!( damage:1 controller )!
auto={T}:Add{B} and!( damage:1 controller )! auto={T}:Add{B} and!( damage:1 controller )!
text=({T}: Add {G} to your mana pool.) -- As Murmuring Bosk enters the battlefield, you may reveal a Treefolk card from your hand. If you don't, Murmuring Bosk enters the battlefield tapped. -- {T}: Add {W} or {B} to your mana pool. Murmuring Bosk deals 1 damage to you. text=({T}: Add {G} to your mana pool.) -- As Murmuring Bosk enters the battlefield, you may reveal a Treefolk card from your hand. If you don't, Murmuring Bosk enters the battlefield tapped. -- {T}: Add {W} or {B} to your mana pool. Murmuring Bosk deals 1 damage to you.
@@ -80038,7 +80034,7 @@ toughness=1
[/card] [/card]
[card] [card]
name=Nirkana Assassin name=Nirkana Assassin
auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):deathtouch ueot auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection;-Honor Troll]):deathtouch ueot
text=Whenever you gain life, Nirkana Assassin gains deathtouch until end of turn. (Any amount of damage it deals to a creature is enough to destroy it.) text=Whenever you gain life, Nirkana Assassin gains deathtouch until end of turn. (Any amount of damage it deals to a creature is enough to destroy it.)
mana={2}{B} mana={2}{B}
type=Creature type=Creature
@@ -87568,7 +87564,7 @@ toughness=2
[/card] [/card]
[card] [card]
name=Port Town name=Port Town
auto=aslongas(island,plains|myhand) tap(noevent) <1 auto=if type(*[plains;island]|myhand)~equalto~0 then tap(noevent)
auto={T}:add{W} auto={T}:add{W}
auto={T}:add{U} auto={T}:add{U}
text=As Port Town enters the battlefield, you may reveal a Plains or Island card from your hand. If you don't, Port Town enters the battlefield tapped. -- {T}: Add {W} or {U} to your mana pool. text=As Port Town enters the battlefield, you may reveal a Plains or Island card from your hand. If you don't, Port Town enters the battlefield tapped. -- {T}: Add {W} or {U} to your mana pool.
@@ -97604,8 +97600,7 @@ toughness=1
[/card] [/card]
[card] [card]
name=Rustic Clachan name=Rustic Clachan
auto=tap(noevent) auto=if type(*[kithkin]|myhand)~equalto~0 then tap(noevent)
auto=aslongas(kithkin|myHand) untap
auto={T}:Add{W} auto={T}:Add{W}
autohand={1}{W}{discard}:counter(1/1,1) target(creature) autohand={1}{W}{discard}:counter(1/1,1) target(creature)
text=As Rustic Clachan enters the battlefield, you may reveal a Kithkin card from your hand. If you don't, Rustic Clachan enters the battlefield tapped. -- {T}: Add {W} to your mana pool. -- Reinforce 1 - {1}{W} ({1}{W}, Discard this card: Put a +1/+1 counter on target creature.) text=As Rustic Clachan enters the battlefield, you may reveal a Kithkin card from your hand. If you don't, Rustic Clachan enters the battlefield tapped. -- {T}: Add {W} to your mana pool. -- Reinforce 1 - {1}{W} ({1}{W}, Discard this card: Put a +1/+1 counter on target creature.)
@@ -101136,7 +101131,7 @@ type=Instant
[/card] [/card]
[card] [card]
name=Searing Meditation name=Searing Meditation
auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):pay({2}) target(creature,player) damage:2 auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection;-Honor Troll]):pay({2}) target(creature,player) damage:2
text=Whenever you gain life, you may pay {2}. If you do, Searing Meditation deals 2 damage to target creature or player. text=Whenever you gain life, you may pay {2}. If you do, Searing Meditation deals 2 damage to target creature or player.
mana={1}{R}{W} mana={1}{R}{W}
type=Enchantment type=Enchantment
@@ -101263,8 +101258,7 @@ type=Artifact Land
[/card] [/card]
[card] [card]
name=Secluded Glen name=Secluded Glen
auto=tap(noevent) auto=if type(*[faerie]|myhand)~equalto~0 then tap(noevent)
auto=aslongas(faerie|myHand) untap
auto={T}:Add{U} auto={T}:Add{U}
auto={T}:Add{B} auto={T}:Add{B}
text=As Secluded Glen enters the battlefield, you may reveal a Faerie card from your hand. If you don't, Secluded Glen enters the battlefield tapped. -- {T}: Add {U} or {B} to your mana pool. text=As Secluded Glen enters the battlefield, you may reveal a Faerie card from your hand. If you don't, Secluded Glen enters the battlefield tapped. -- {T}: Add {U} or {B} to your mana pool.
@@ -102343,7 +102337,7 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Serene Steward name=Serene Steward
auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):pay({W}) counter(1/1) target(creature) auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection;-Honor Troll]):pay({W}) counter(1/1) target(creature)
text=Whenever you gain life, you may pay {W}. If you do, put a +1/+1 counter on target creature. text=Whenever you gain life, you may pay {W}. If you do, put a +1/+1 counter on target creature.
mana={1}{W} mana={1}{W}
type=Creature type=Creature
@@ -131082,7 +131076,7 @@ toughness=5
[card] [card]
name=Wall of Limbs name=Wall of Limbs
abilities=defender abilities=defender
auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):counter(1/1,1) auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection;-Honor Troll]):counter(1/1,1)
auto={5}{B}{B}{S}:name(Lose Life) target(player) life:-storedpower auto={5}{B}{B}{S}:name(Lose Life) target(player) life:-storedpower
text=Defender (This creature can't attack.) -- Whenever you gain life, put a +1/+1 counter on Wall of Limbs. -- {5}{B}{B}, Sacrifice Wall of Limbs: Target player loses X life, where X is Wall of Limbs's power. text=Defender (This creature can't attack.) -- Whenever you gain life, put a +1/+1 counter on Wall of Limbs. -- {5}{B}{B}, Sacrifice Wall of Limbs: Target player loses X life, where X is Wall of Limbs's power.
mana={2}{B} mana={2}{B}
@@ -131510,8 +131504,7 @@ subtype=Aura
[/card] [/card]
[card] [card]
name=Wanderwine Hub name=Wanderwine Hub
auto=tap(noevent) auto=if type(*[merfolk]|myhand)~equalto~0 then tap(noevent)
auto=aslongas(merfolk|myHand) untap
auto={T}:Add{W} auto={T}:Add{W}
auto={T}:Add{U} auto={T}:Add{U}
text=As Wanderwine Hub enters the battlefield, you may reveal a Merfolk card from your hand. If you don't, Wanderwine Hub enters the battlefield tapped. -- {T}: Add {W} or {U} to your mana pool. text=As Wanderwine Hub enters the battlefield, you may reveal a Merfolk card from your hand. If you don't, Wanderwine Hub enters the battlefield tapped. -- {T}: Add {W} or {U} to your mana pool.
@@ -1,7 +1,7 @@
grade=borderline grade=borderline
#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 30-11-2020 #We sorted this in alphabetical order - Luruz & Vitty85 25-04-2021
[card] [card]
name=Abian, Luvion Usurper name=Abian, Luvion Usurper
auto=counter(0/0,5,loyalty) auto=counter(0/0,5,loyalty)
@@ -570,7 +570,7 @@ color=red
name=Chandra, the Firebrand name=Chandra, the Firebrand
auto=counter(0/0,3,loyalty) auto=counter(0/0,3,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage to any target) damage:1 target(player,creature,planeswalker) auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage to any target) damage:1 target(player,creature,planeswalker)
auto={C(0/0,-2,Loyalty)}:name(-2: When cast instant or sorcery, copy spell) emblem transforms((,newability[@moveTo(*[instant;sorcery]|myStack):castcard(copied noevent) target(*[instant;sorcery]|mystack)])) oneshot ueot auto={C(0/0,-2,Loyalty)}:name(-2: When cast instant or sorcery, copy spell) emblem transforms((,newability[@movedto(*[instant;sorcery]|myStack) turnlimited:all(trigger[to]) activate castcard(copied noevent)])) ueot
auto={C(0/0,-6,Loyalty)}:name(-6: Deals 6 damage up to six targets) ability$!name(Choose one) choice name(Damage opponent and five creature) damage:6 opponent && damage:6 target(<upto:5>creature) _ choice name(Damage controller and five creature) damage:6 controller && damage:6 target(<upto:5>creature) _ choice name(Damage creature) damage:6 target(<upto:6>creature)!$ controller auto={C(0/0,-6,Loyalty)}:name(-6: Deals 6 damage up to six targets) ability$!name(Choose one) choice name(Damage opponent and five creature) damage:6 opponent && damage:6 target(<upto:5>creature) _ choice name(Damage controller and five creature) damage:6 controller && damage:6 target(<upto:5>creature) _ choice name(Damage creature) damage:6 target(<upto:6>creature)!$ controller
text=+1: Chandra, the Firebrand deals 1 damage to any target. -- -2: When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy. -- -6: Chandra, the Firebrand deals 6 damage to each of up to six target creatures and/or players. text=+1: Chandra, the Firebrand deals 1 damage to any target. -- -2: When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy. -- -6: Chandra, the Firebrand deals 6 damage to each of up to six target creatures and/or players.
mana={3}{R} mana={3}{R}
@@ -727,18 +727,6 @@ type=Legendary Planeswalker
subtype=Dovin subtype=Dovin
[/card] [/card]
[card] [card]
name=Personal Decoy
abilities=exiledeath
auto=counter(0/0,lifetotal,loyalty)
auto=lord(creature|opponentBattlefield) cantattack
auto={C(0/0,1,Loyalty)}:name(+1: Gain 1 life) life:1 controller
auto={C(0/0,-4,Loyalty)}:name(-4: Draw a card) draw:1 controller
text=Personal Decoy enters the battlefield with a number of loyalty counters on it equal to your life total. If it would leave the battlefield, exile it instead of putting it anywhere else. You cant be attacked. -- +1: You gain 1 life. -- 4: Draw a card.
mana={5}{W}{U}
type=Planeswalker
subtype=Duck
[/card]
[card]
name=Elspeth, Knight-Errant name=Elspeth, Knight-Errant
auto=counter(0/0,4,loyalty) auto=counter(0/0,4,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Create a 1/1 soldier) create(Soldier:creature Soldier:1/1:white) auto={C(0/0,1,Loyalty)}:name(+1: Create a 1/1 soldier) create(Soldier:creature Soldier:1/1:white)
@@ -1355,6 +1343,59 @@ type=Legendary Planeswalker
subtype=Karn subtype=Karn
[/card] [/card]
[card] [card]
name=Kasmina, Enigma Sage
auto=counter(0/0,2,Loyalty)
aicode=activate transforms((,newability[all(*[zpos<=1]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot
auto={C(0/0.2.Loyalty)}:limit:1 name(+2: Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend
auto={C(0/0.-1.Loyalty)}:limit:1 name(-1: Create fractal with 1 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.1) )!
auto={C(0/0.-2.Loyalty)}:limit:1 name(-2: Create fractal with 2 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.2) )!
auto={C(0/0.-3.Loyalty)}:limit:1 name(-3: Create fractal with 3 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.3) )!
auto={C(0/0.-4.Loyalty)}:limit:1 name(-4: Create fractal with 4 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.4) )!
auto={C(0/0.-5.Loyalty)}:limit:1 name(-5: Create fractal with 5 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.5) )!
auto={C(0/0.-6.Loyalty)}:limit:1 name(-6: Create fractal with 6 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.6) )!
auto={C(0/0.-7.Loyalty)}:limit:1 name(-7: Create fractal with 7 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.7) )!
auto={C(0/0.-8.Loyalty)}:limit:1 name(-8: Create fractal with 8 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.8) )!
auto={C(0/0.-9.Loyalty)}:limit:1 name(-9: Create fractal with 9 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.9) )!
auto={C(0/0.-10.Loyalty)}:limit:1 name(-10: Create fractal with 10 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.10) )!
auto={C(0/0.-11.Loyalty)}:limit:1 name(-11: Create fractal with 11 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.11) )!
auto={C(0/0.-12.Loyalty)}:limit:1 name(-12: Create fractal with 12 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.12) )!
auto={C(0/0.-13.Loyalty)}:limit:1 name(-13: Create fractal with 13 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.13) )!
auto={C(0/0.-14.Loyalty)}:limit:1 name(-14: Create fractal with 14 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.14) )!
auto={C(0/0.-15.Loyalty)}:limit:1 name(-15: Create fractal with 15 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.15) )!
auto={C(0/0.-16.Loyalty)}:limit:1 name(-16: Create fractal with 16 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.16) )!
auto={C(0/0.-17.Loyalty)}:limit:1 name(-17: Create fractal with 17 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.17) )!
auto={C(0/0.-18.Loyalty)}:limit:1 name(-18: Create fractal with 18 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.18) )!
auto={C(0/0.-19.Loyalty)}:limit:1 name(-19: Create fractal with 19 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.19) )!
auto={C(0/0.-20.Loyalty)}:limit:1 name(-20: Create fractal with 20 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.20) )!
auto={C(0/0.-8.Loyalty)}:limit:1 name(-8: Search instant or sorcery) target(*[instant;sorcery;share!color!]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[zerocast],newability[@each untap:canplayfromexile],newability[@each untap:zerocast])) forever )!
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.2.Loyalty)}:limit:1 name(+2: Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-1.Loyalty)}:limit:1 name(-1: Create fractal with 1 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.1) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-2.Loyalty)}:limit:1 name(-2: Create fractal with 2 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.2) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-3.Loyalty)}:limit:1 name(-3: Create fractal with 3 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.3) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-4.Loyalty)}:limit:1 name(-4: Create fractal with 4 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.4) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-5.Loyalty)}:limit:1 name(-5: Create fractal with 5 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.5) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-6.Loyalty)}:limit:1 name(-6: Create fractal with 6 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.6) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-7.Loyalty)}:limit:1 name(-7: Create fractal with 7 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.7) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-8.Loyalty)}:limit:1 name(-8: Create fractal with 8 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.8) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-9.Loyalty)}:limit:1 name(-9: Create fractal with 9 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.9) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-10.Loyalty)}:limit:1 name(-10: Create fractal with 10 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.10) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-11.Loyalty)}:limit:1 name(-11: Create fractal with 11 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.11) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-12.Loyalty)}:limit:1 name(-12: Create fractal with 12 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.12) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-13.Loyalty)}:limit:1 name(-13: Create fractal with 13 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.13) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-14.Loyalty)}:limit:1 name(-14: Create fractal with 14 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.14) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-15.Loyalty)}:limit:1 name(-15: Create fractal with 15 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.15) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-16.Loyalty)}:limit:1 name(-16: Create fractal with 16 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.16) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-17.Loyalty)}:limit:1 name(-17: Create fractal with 17 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.17) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-18.Loyalty)}:limit:1 name(-18: Create fractal with 18 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.18) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-19.Loyalty)}:limit:1 name(-19: Create fractal with 19 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.19) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-20.Loyalty)}:limit:1 name(-20: Create fractal with 20 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.20) )!]))
auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-8.Loyalty)}:limit:1 name(-8: Search instant or sorcery) target(*[instant;sorcery;share!color!]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[zerocast],newability[@each untap:canplayfromexile],newability[@each untap:zerocast])) forever )!]))
text=Each other planeswalker you control has the loyalty abilities of Kasmina, Enigma Sage. -- +2: Scry 1. -- X: Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it. -- 8: Search your library for an instant or sorcery card that shares a color with this planeswalker, exile that card, then shuffle. You may cast that card without paying its mana cost.
mana={1}{G}{U}
type=Legendary Planeswalker
subtype=Kasmina
[/card]
[card]
name=Kasmina, Enigmatic Mentor name=Kasmina, Enigmatic Mentor
auto=counter(0/0,5,loyalty) auto=counter(0/0,5,loyalty)
auto=@targeted(*[creature;planeswalker]|myBattlefield) from(*[instant;sorcery]|opponentzones):choice name(This spell costs 2 more) name(This spell costs 2 more) target(*[instant;sorcery]|opponentzones) transforms((,newability[pay[[{2}]] name(pay 2 mana) donothing?fizzle])) oneshot auto=@targeted(*[creature;planeswalker]|myBattlefield) from(*[instant;sorcery]|opponentzones):choice name(This spell costs 2 more) name(This spell costs 2 more) target(*[instant;sorcery]|opponentzones) transforms((,newability[pay[[{2}]] name(pay 2 mana) donothing?fizzle])) oneshot
@@ -1634,6 +1675,18 @@ type=Legendary Planeswalker
subtype=Lukka subtype=Lukka
[/card] [/card]
[card] [card]
name=Lukka, Wayward Bonder
auto=counter(0/0,5,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Don't discard any card) donothing
auto={C(0/0,1,Loyalty)}:name(+1: Discard and draw) target(*|myhand) transforms((,newability[reject],newability[if cantargetcard(*[creature]|*) then draw:2 else draw:1])) oneshot
auto={C(0/0,-2,Loyalty)}:name(-2: Return creature from graveyard) target(creature|mygraveyard) moveto(mybattlefield) and!( transforms((,newability[unearth],newability[haste])) forever )!
auto={C(0/0,-7,Loyalty)}:name(-7: Get emblem powerstrike) emblem transforms((,newability[@movedTo(creature|mybattlefield):name(Damage any target) all(trigger[to]) transforms((,newability[name(Damage any target) damage:power target(player^creature^planeswalker)])) oneshot])) forever dontremove
text=+1: You may discard a card. If you do, draw a card. If a creature card was discarded this way, draw two cards instead. -- 2: Return target creature card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of your next upkeep. -- 7: You get an emblem with "Whenever a creature enters the battlefield under your control, it deals damage equal to its power to any target."
mana={4}{R}{R}
type=Legendary Planeswalker
subtype=Lukka
[/card]
[card]
name=Mu Yanling name=Mu Yanling
auto=counter(0/0,5,loyalty) auto=counter(0/0,5,loyalty)
auto={C(0/0,2,Loyalty)}:name(+2: Target creature can't be blocked) unblockable target(creature) auto={C(0/0,2,Loyalty)}:name(+2: Target creature can't be blocked) unblockable target(creature)
@@ -2002,6 +2055,31 @@ type=Legendary Planeswalker
subtype=Oko subtype=Oko
[/card] [/card]
[card] [card]
name=Personal Decoy
abilities=exiledeath
auto=counter(0/0,lifetotal,loyalty)
auto=lord(creature|opponentBattlefield) cantattack
auto={C(0/0,1,Loyalty)}:name(+1: Gain 1 life) life:1 controller
auto={C(0/0,-4,Loyalty)}:name(-4: Draw a card) draw:1 controller
text=Personal Decoy enters the battlefield with a number of loyalty counters on it equal to your life total. If it would leave the battlefield, exile it instead of putting it anywhere else. You cant be attacked. -- +1: You gain 1 life. -- 4: Draw a card.
mana={5}{W}{U}
type=Planeswalker
subtype=Duck
[/card]
[card]
name=Professor Onyx
auto=counter(0/0,5,Loyalty)
auto=@movedto(*[instant;sorcery]|mystack):name(Gain life) life:2 controller && life:-2 opponent
aicode=activate transforms((,newability[target(*[zpos<=3]|mylibrary) moveto(myhand) and!( all(*[zpos<=3]|mylibrary) moveto(mygraveyard) )!])) ueot
auto={C(0/0,1,Loyalty)}:name(+1: Lose life and look cards) life:-1 controller && name(Look top cards) reveal:3 optionone name(Get a Card) target(<1>*|reveal) moveto(myhand) optiononeend optiontwo name(put in grave) all(*|reveal) moveto(mygraveyard) optiontwoend revealend
auto={C(0/0,-3,Loyalty)}:name(-3: Sacrifice creature) ability$!name(Sacrifice creature) name(Sacrifice creature) sacrifice notatarget(creature[power=power:highest:creature:myBattlefield]|mybattlefield)!$ opponent
auto={C(0/0,-8,Loyalty)}:name(-8: Discard or lose life) name(-8: Discard or lose life) life:-7minusohandcountminusend opponent && life:-7minusohandcountminusend opponent && life:-7minusohandcountminusend opponent && ability$!name(Choose cards) name(Choose cards) target(<7>*|myhand) transforms((,newability[choice name(Discard this card) reject],newability[choice name(Lose 3 life) life:-3 controller])) oneshot!$ opponent
text=Magecraft — Whenever you cast or copy an instant or sorcery spell, each opponent loses 2 life and you gain 2 life. -- +1: You lose 1 life. Look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard. -- 3: Each opponent sacrifices a creature with the greatest power among creatures that player controls. -- 8: Each opponent may discard a card. If they don't, they lose 3 life. Repeat this process six more times.
mana={4}{B}{B}
type=Legendary Planeswalker
subtype=Liliana
[/card]
[card]
name=Ral, Caller of Storms name=Ral, Caller of Storms
auto=counter(0/0,4,loyalty) auto=counter(0/0,4,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Draw a card) draw:1 controller auto={C(0/0,1,Loyalty)}:name(+1: Draw a card) draw:1 controller
@@ -2030,7 +2108,7 @@ auto=counter(0/0,4,loyalty)
aicode=activate transforms((,newability[all(*[zpos<=1]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot aicode=activate transforms((,newability[all(*[zpos<=1]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot
auto=@movedTo(*[instant;sorcery]|myStack):ability$!name(Choose one) choice name(Damage opponent) damage:1 target(opponent) _ choice name(Damage Planeswalker) damage:1 target(planeswalker)!$ controller auto=@movedTo(*[instant;sorcery]|myStack):ability$!name(Choose one) choice name(Damage opponent) damage:1 target(opponent) _ choice name(Damage Planeswalker) damage:1 target(planeswalker)!$ controller
auto={C(0/0,2,Loyalty)}:name(+2: Scry: 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend auto={C(0/0,2,Loyalty)}:name(+2: Scry: 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend
auto={C(0/0,-2,Loyalty)}:name(-2: Whenever cast instant or sorcery copy spell) emblem transforms((,newability[@movedTo(*[instant;sorcery]|myStack):castcard(copied noevent) target(*[instant;sorcery]|mystack)])) ueot oneshot auto={C(0/0,-2,Loyalty)}:name(-2: Whenever cast instant or sorcery copy spell) emblem transforms((,newability[@movedto(*[instant;sorcery]|myStack) turnlimited:all(trigger[to]) activate castcard(copied noevent)])) ueot
text=Whenever you cast or copy an instant or sorcery spell, Ral, Storm Conduit deals 1 damage to target opponent or planeswalker. -- +2: Scry 1. -- 2: When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy. text=Whenever you cast or copy an instant or sorcery spell, Ral, Storm Conduit deals 1 damage to target opponent or planeswalker. -- +2: Scry 1. -- 2: When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy.
mana={3}{U}{R} mana={3}{U}{R}
type=Legendary Planeswalker type=Legendary Planeswalker
@@ -2072,6 +2150,20 @@ type=Legendary Planeswalker
subtype=Rowan subtype=Rowan
[/card] [/card]
[card] [card]
name=Rowan, Scholar of Sparks
other={4}{U} name(Will, Scholar of Frost)
otherrestriction=can play planeswalker
autostack=if paid(alternative) then name(Will, Scholar of Frost) name(Will, Scholar of Frost) flip(Will, Scholar of Frost) forcetype(Legendary Planeswalker)
auto=if paid(alternative) then counter(0/0,4,Loyalty) else counter(0/0,2,loyalty)
auto=this(variable{isflipped}<1) lord(instant,sorcery|mycastingzone) altercost(colorless,-1)
auto=this(variable{isflipped}<1) {C(0/0,1,Loyalty)}:name(+1: Deals damage) name(+1: Deals damage) if compare(pdrewcount)~lessthan~3 then damage:1 opponent else damage:3 opponent
auto=this(variable{isflipped}<1) {C(0/0,-4,Loyalty)}:name(-4: Emblem copy spells) name(-4: Emblem copy spells) emblem transforms((,newability[@movedto(*[instant;sorcery]|mystack):all(trigger[to]<1>) transforms((,newability[pay[[{2}]] name(copy spell) activate name(copy spell) castcard(copied noevent)])) forever])) forever dontremove
text=Instant and sorcery spells you cast cost {1} less to cast. -- +1: Rowan, Scholar of Sparks deals 1 damage to each opponent. If you've drawn three or more cards this turn, she deals 3 damage to each opponent instead. -- 4: You get an emblem with "Whenever you cast an instant or sorcery spell, you may pay 2 . If you do, copy that spell. You may choose new targets for the copy."
mana={2}{R}
type=Legendary Planeswalker
subtype=Rowan
[/card]
[card]
name=Saheeli Rai name=Saheeli Rai
auto=counter(0/0,3,loyalty) auto=counter(0/0,3,loyalty)
aicode=activate transforms((,newability[all(*[zpos<=1]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot aicode=activate transforms((,newability[all(*[zpos<=1]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot
@@ -2825,6 +2917,19 @@ type=Legendary Planeswalker
subtype=Will subtype=Will
[/card] [/card]
[card] [card]
name=Will, Scholar of Frost
auto=counter(0/0,4,loyalty)
auto=this(variable{isflipped}>0) lord(instant,sorcery|mycastingzone) altercost(colorless,-1)
auto=this(variable{isflipped}>0) {C(0/0,1,Loyalty)}:name(+1: Dont't target any creature) name(+1: Dont't target any creature) donothing
auto=this(variable{isflipped}>0) {C(0/0,1,Loyalty)}:name(+1: Target creature becomes 0/2) name(+1: Target creature becomes 0/2) target(creature) transforms((,setpower=0,settoughness=2)) uynt
auto=this(variable{isflipped}>0) {C(0/0,-3,Loyalty)}:name(-3: Draw 2 cards) name(-3: Draw 2 cards) draw:2 controller
auto=this(variable{isflipped}>0) {C(0/0,-7,Loyalty)}:name(-7: Exile 5 permanents) name(-7: Exile 5 permanents) target(<upto:5>*|battlefield) moveto(exile) and!( transforms((,newability[token(Elemental^Creature Elemental^4/4^blue^red)])) oneshot )!
text=Instant and sorcery spells you cast cost {1} less to cast. -- +1: Up to one target creature has base power and toughness 0/2 until your next turn. -- 3: Draw two cards. -- 7: Exile up to five target permanents. For each permanent exiled this way, its controller creates a 4/4 blue and red Elemental creature token.
mana={4}{U}
type=Legendary Planeswalker
subtype=Will
[/card]
[card]
name=Wrenn and Six name=Wrenn and Six
auto=counter(0/0,3,loyalty) auto=counter(0/0,3,loyalty)
auto={C(0/0,1,Loyalty)}:restriction{type(land|mygraveyard)~morethan~0} name(+1: Return target land from graveyard) moveTo(myHand) target(land|myGraveyard) auto={C(0/0,1,Loyalty)}:restriction{type(land|mygraveyard)~morethan~0} name(+1: Return target land from graveyard) moveTo(myHand) target(land|myGraveyard)
@@ -2,7 +2,7 @@ grade=unsupported
#The cards in this file are not implemented/incomplete yet. #The cards in this file are not implemented/incomplete yet.
#Updated Card lists not in primitives (Borderline, Crappy, Unsupported and Missing Cards up to Aether Revolt) as of 3/14/2017 #Updated Card lists not in primitives (Borderline, Crappy, Unsupported and Missing Cards up to Aether Revolt) as of 3/14/2017
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card #Please keep these card alphabetized, and try to have the "name=" line at the top of each card
#I sorted this programatically - Vitty85 30-11-2020 #I sorted this programatically - Vitty85 25-04-2021
[card] [card]
name="Ach! Hans, Run!" name="Ach! Hans, Run!"
text=At the beginning of your upkeep, you may say "Ach Hans, run It's the . . ." and name a creature card. If you do, search your library for the named card, put it into play, then shuffle your library. That creature has haste. Remove it from the game at end of turn. text=At the beginning of your upkeep, you may say "Ach Hans, run It's the . . ." and name a creature card. If you do, search your library for the named card, put it into play, then shuffle your library. That creature has haste. Remove it from the game at end of turn.
+8 -1
View File
@@ -6219,11 +6219,18 @@ int ActivatedAbility::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
return 1; return 1;
if(card->hasType(Subtypes::TYPE_PLANESWALKER)) if(card->hasType(Subtypes::TYPE_PLANESWALKER))
{ {
for(unsigned int k = 0;k < card->cardsAbilities.size();++k) /*for(unsigned int k = 0;k < card->cardsAbilities.size();++k)
{ {
ActivatedAbility * check = dynamic_cast<ActivatedAbility*>(card->cardsAbilities[k]); ActivatedAbility * check = dynamic_cast<ActivatedAbility*>(card->cardsAbilities[k]);
if(check && check->counters) if(check && check->counters)
return 0; return 0;
}*/
// Improved the check to avoid the multiple triggers in case of abilities gained from other cards (e.g. Kasmina, Enigma Sage)
for(unsigned int k = 0;k < card->getObserver()->mLayers->actionLayer()->mObjects.size();++k)
{
ActivatedAbility * check = dynamic_cast<ActivatedAbility*>(card->getObserver()->mLayers->actionLayer()->mObjects[k]);
if(check && check->source == card && check->counters)
return 0;
} }
if (player != game->currentPlayer) if (player != game->currentPlayer)
return 0; return 0;
+1
View File
@@ -171,6 +171,7 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
s2 = s.substr(found + 1); s2 = s.substr(found + 1);
while (s2.size()) while (s2.size())
{ {
replace(s2.begin(), s2.end(), '^', ','); // To allow the usage of ^ instead of , char (e.g. target multiple zones within transforms keyword)
found = s2.find(","); found = s2.find(",");
string zoneName; string zoneName;
if (found != string::npos) if (found != string::npos)