From 6229de7c5500a8ce9f08f1d4bfe59bd7d7ebdec5 Mon Sep 17 00:00:00 2001 From: Vittorio Alfieri Date: Sun, 10 Jan 2021 17:48:08 +0100 Subject: [PATCH] Fixed MB1 set, added/fixed primitives, improved Android downloader, improved keywords to remove and add counters. --- .../src/net/wagic/utils/ImgDownloader.java | 4 + projects/mtg/bin/Res/sets/MB1/_cards.dat | 14 +- .../bin/Res/sets/primitives/borderline.txt | 439 +++++++++++++++++- .../bin/Res/sets/primitives/planeswalkers.txt | 79 ++-- .../bin/Res/sets/primitives/unsupported.txt | 310 +------------ projects/mtg/src/MTGAbility.cpp | 5 +- 6 files changed, 486 insertions(+), 365 deletions(-) diff --git a/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java b/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java index 024ace4ef..aa6dbaea7 100644 --- a/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java +++ b/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java @@ -1668,6 +1668,10 @@ public class ImgDownloader { cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/6/6/661cbde4-9444-4259-b2cf-7c8f9814a071.jpg?1604666353"; else if(id.equals("295810t")) cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/4/5/458f44dd-83f1-497e-b5d0-e3417eb9dfec.jpg?1592672533"; + else if(id.equals("476226")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/c/a/caa7922e-3313-4f12-b91e-95aaa2d76cc2.jpg?1574133191"; + else if(id.equals("476217")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/a/9/a9a6cf9c-3560-435c-b0ec-8653a9dc7776.jpg?1578369133"; return cardurl; } diff --git a/projects/mtg/bin/Res/sets/MB1/_cards.dat b/projects/mtg/bin/Res/sets/MB1/_cards.dat index edb8542d5..3b49aa845 100644 --- a/projects/mtg/bin/Res/sets/MB1/_cards.dat +++ b/projects/mtg/bin/Res/sets/MB1/_cards.dat @@ -3,7 +3,7 @@ author=Wagic Team name=Mystery Booster orderindex=REP-E.MB1 year=2019-11-07 -total=1798 +total=1800 [/meta] [card] primitive=Goat @@ -481,7 +481,7 @@ id=-293107 rarity=T [/card] [card] -primitive=a +primitive=Bird id=-293087 rarity=T [/card] @@ -526,6 +526,11 @@ id=-292988 rarity=T [/card] [card] +primitive=Abian, Luvion Usurper +id=476217 +rarity=R +[/card] +[card] primitive=All Is Dust id=292985 rarity=R @@ -4166,6 +4171,11 @@ id=293712 rarity=U [/card] [card] +primitive=Personal Decoy +id=476226 +rarity=R +[/card] +[card] primitive=Pestilence id=293713 rarity=C diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index f597a0880..2acbce30e 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -9758,8 +9758,8 @@ type=Artifact [/card] [card] name=Coveted Peacock -abilities=flyin -auto=@combat(attacking) source(this):may target(creature|opponentBattlefield) mustattack uynt +abilities=flying +auto=@combat(attacking) source(this):may name(Goad creature) target(creature|opponentBattlefield) transforms((,newability[mustattack])) uynt text=Flying -- Whenever Coveted Peacock attacks, you may goad target creature defending player controls. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.) mana={3}{U}{U} type=Creature @@ -18588,6 +18588,16 @@ power=2 toughness=3 [/card] [card] +name=Ghostfire Blade +auto={3}:equip +auto={1}:rehook target(creature[colorless]|mybattlefield) +auto=teach(creature) 2/2 +text=Equipped creature gets +2/+2. -- Equip {3} -- Ghostfire Blade's equip ability costs {2} less to activate if it targets a colorless creature. +mana={1} +type=Artifact +subtype=Equipment +[/card] +[card] name=Ghostly Pilferer auto=@untapped(this):name(pay 2 to draw) pay[[{2}]] name(Pay 2) draw:1 controller auto=@movedTo(*|opponentStack) from(graveyard):draw:1 controller @@ -18642,6 +18652,17 @@ power=1 toughness=1 [/card] [card] +name=Giant Turtle +auto=@each my combatends restriction{didattack}:transforms((,newability[counter(0/0.1.TurtleEffect)],newability[@each my end restriction{didntattack}:counter(0/0.-1.TurtleEffect)])) forever +auto=this(counter{0/0.1.TurtleEffect}>0) cantattack +text=Giant Turtle can't attack if it attacked during your last turn. +mana={1}{G}{G} +type=Creature +subtype=Turtle +power=2 +toughness=4 +[/card] +[card] name=Giant's Skewer auto={3}:equip auto=teach(creature) 2/1 @@ -18820,6 +18841,27 @@ power=3 toughness=3 [/card] [card] +name=Gilder Bairn +auto={2}{GU}{Q}:name(Add counter to a permanent) name(Add counter to a permanent) target(*[counter{any}]|battlefield) duplicatecounters(all,single) +text={2}{GU}, {Q}: For each counter on target permanent, put another of those counters on that permanent. ({Q} is the untap symbol.) +mana={1}{GU}{GU} +type=Creature +subtype=Ouphe +power=1 +toughness=3 +[/card] +[card] +name=Gilt-Leaf Winnower +abilities=menace +auto=may name(Destroy non-elf) target(creature[-elf]) transforms((,newability[if compare(power)~morethan~compare(toughness) then destroy],newability[if compare(power)~lessthan~compare(toughness) then destroy])) oneshot +text=Menace (This creature can't be blocked except by two or more creatures.) -- When Gilt-Leaf Winnower enters the battlefield, you may destroy target non-Elf creature whose power and toughness aren't equal. +mana={3}{B}{B} +type=Creature +subtype=Elf Warrior +power=4 +toughness=3 +[/card] +[card] name=Giltgrove Stalker auto=cantbeblockedby(creature[power<=2]) text=Giltgrove Stalker can't be blocked by creatures with power 2 or less. @@ -18915,6 +18957,16 @@ mana={2}{U} type=Instant [/card] [card] +name=Glacial Plating +target=creature +auto=cumulativeupcost[{i}] moveto(mygraveyard) +auto=thisforeach(counter{0/0.1.Age}>0) teach(creature) 3/3 +text=Enchant creature -- Cumulative upkeep {S{i} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it. {S{i} can be paid with one mana from a snow permanent.) -- Enchanted creature gets +3/+3 for each age counter on Glacial Plating. +mana={2}{W}{W} +type=Snow Enchantment +subtype=Aura +[/card] +[card] name=Glacial Revelation auto=name(Look) reveal:6 optionone name(Get Snow) target(*[snow]|reveal) moveto(myHand) optiononeend optiontwo all(*|reveal) moveto(graveyard) optiontwoend revealend text=Reveal the top six cards of your library. You may put any number of snow permanent cards from among them into your hand. Put the rest into your graveyard. @@ -19081,6 +19133,43 @@ power=2 toughness=4 [/card] [card] +name=Glissa Sunseeker +abilities=first strike +auto={T}:name(destroy artifact) name(destroy artifact) destroy target(artifact[manacost=mypoolcount]) +text=First strike -- {T}: Destroy target artifact if its converted mana cost is equal to the amount of mana in your mana pool. +mana={2}{G}{G} +type=Legendary Creature +subtype=Elf +power=3 +toughness=2 +[/card] +[card] +name=Global Ruin +auto=ability$!name(Sacrifice forests) name(Sacrifice forests) target(forest|mybattlefield) sacrifice!$ controller +auto=ability$!name(Sacrifice plains) name(Sacrifice plains) target(plains|mybattlefield) sacrifice!$ controller +auto=ability$!name(Sacrifice mountains) name(Sacrifice mountains) target(mountain|mybattlefield) sacrifice!$ controller +auto=ability$!name(Sacrifice swamps) name(Sacrifice swamps) target(swamp|mybattlefield) sacrifice!$ controller +auto=ability$!name(Sacrifice islands) name(Sacrifice islands) target(island|mybattlefield) sacrifice!$ controller +auto=ability$!name(Sacrifice other lands) name(Sacrifice other lands) all(land[-forest;-plains;-swamp;-mountain;-island]|mybattlefield) sacrifice!$ controller +auto=ability$!name(Sacrifice forests) name(Sacrifice forests) target(forest|mybattlefield) sacrifice!$ opponent +auto=ability$!name(Sacrifice plains) name(Sacrifice plains) target(plains|mybattlefield) sacrifice!$ opponent +auto=ability$!name(Sacrifice mountains) name(Sacrifice mountains) target(mountain|mybattlefield) sacrifice!$ opponent +auto=ability$!name(Sacrifice swamps) name(Sacrifice swamps) target(swamp|mybattlefield) sacrifice!$ opponent +auto=ability$!name(Sacrifice islands) name(Sacrifice islands) target(island|mybattlefield) sacrifice!$ opponent +auto=ability$!name(Sacrifice other lands) name(Sacrifice other lands) all(land[-forest;-plains;-swamp;-mountain;-island]|mybattlefield) sacrifice!$ opponent +text=Each player chooses from the lands he or she controls a land of each basic land type, then sacrifices the rest. +mana={4}{W} +type=Sorcery +[/card] +[card] +name=Gloom +auto=lord(*[white]|mycastingzone) altercost(colorless, +3) +auto=lord(*[white]|opponentcastingzone) altercost(colorless, +3) +text=White spells cost {3} more to cast. -- Activated abilities of white enchantments cost {3} more to activate. +mana={2}{B} +type=Enchantment +[/card] +[card] name=Gloom Pangolin mana={2}{B} type=Creature @@ -19558,6 +19647,16 @@ mana={1}{R} type=Enchantment [/card] [card] +name=Goblin Racketeer +auto=@combat(attacking) source(this):may name(Goad creature) target(creature|opponentBattlefield) transforms((,newability[mustattack])) uynt +text=Whenever Goblin Racketeer attacks, you may goad target creature defending player controls. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.) +mana={3}{R} +type=Creature +subtype=Goblin Rogue +power=4 +toughness=2 +[/card] +[card] name=Goblin Secret Agent abilities=first strike text=First strike -- At the beginning of your upkeep, reveal a card from your hand at random. @@ -20298,6 +20397,19 @@ mana={1} type=Artifact [/card] [card] +name=Grenzo, Havoc Raiser +auto=@combatdamagefoeof(player) from(creature|mybattlefield) restriction{type(creature|opponentBattlefield)~morethan~0}:name(Goad creature) name(Goad creature) target(creature|opponentBattlefield) transforms((,newability[mustattack])) uynt +auto=@combatdamagefoeof(player) from(creature|mybattlefield) restriction{type(creature|opponentBattlefield)~equalto~0}:name(Exile top card) name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[endofturn once] moveTo(ownerexile)])) ueot )! +auto=@combatdamageof(player) from(creature|mybattlefield) restriction{type(creature|mybattlefield)~morethan~0}:name(Goad creature) name(Goad creature) target(creature|myBattlefield) transforms((,newability[mustattack])) uynt +auto=@combatdamageof(player) from(creature|mybattlefield) restriction{type(creature|mybattlefield)~equalto~0}:name(Exile top card) name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana])) ueot )! +text=Whenever a creature you control deals combat damage to a player, choose one — -- • Goad target creature that player controls. -- • Exile the top card of that player's library. Until end of turn, you may cast that card and you may spend mana as though it were mana of any color to cast it. +mana={R}{R} +type=Legendary Creature +subtype=Goblin Rogue +power=2 +toughness=2 +[/card] +[card] name=Grenzo's Rebuttal auto=token(Ogre,Creature Ogre,4/4,red) auto=ability$!name(Destroy artifact) name(destroy artifact) target(artifact|opponentBattlefield) destroy!$ controller @@ -20464,6 +20576,13 @@ mana={1}{B} type=Sorcery [/card] [card] +name=Grinning Totem +auto={2}{T}{S}:target(*|opponentlibrary) moveto(myexile) and!( transforms((,newability[counter(0/0.1.TotemExiled)],newability[canplayfromexile],newability[@each my upkeep:all(*[counter{0/0.1.TotemExiled}]|myexile) moveTo(ownergraveyard)])) forever )! +text={2}, {T}, Sacrifice Grinning Totem: Search target opponent's library for a card and exile it. Then that player shuffles his or her library. Until the beginning of your next upkeep, you may play that card. At the beginning of your next upkeep, if you haven't played it, put it into its owner's graveyard. +mana={4} +type=Artifact +[/card] +[card] name=Grip of Amnesia auto=draw:1 controller auto=if type(*|opponentGraveyard)~lessthan~10 then ability$!name(Choose one) choice name(Exile all cards from graveyard) all(*|mygraveyard) moveto(exile) _ choice name(Counter your spell) target(*|mystack) fizzle!$ opponent @@ -20673,6 +20792,17 @@ power=3 toughness=3 [/card] [card] +name=Guardian of the Gateless +abilities=flying +auto=@combat(blocking) source(this):1/1 ueot +text=Flying -- Guardian of the Gateless can block any number of creatures. -- Whenever Guardian of the Gateless blocks, it gets +1/+1 until end of turn for each creature it's blocking. +mana={4}{W} +type=Creature +subtype=Angel +power=3 +toughness=3 +[/card] +[card] name=Guardian Project auto=@movedto(creature[-token]|mybattlefield):all(trigger[to]) transforms((,newability[if type(creature[share!name!]|mybattlefield)~lessthan~2 then if type(creature[share!name!]|mygraveyard)~lessthan~1 then draw:1 controller])) ueot text=Whenever a nontoken creature enters the battlefield under your control, if it doesn't have the same name as another creature you control or a creature card in your graveyard, draw a card. @@ -21010,6 +21140,15 @@ power=1 toughness=1 [/card] [card] +name=Halls of Mist +auto=cumulativeupcost[{1}] sacrifice +auto=@each my combatends:all(creature[attacking]|mybattlefield)) transforms((,newability[counter(0/0.1.MistEffect)],newability[@each my end restriction{didntattack}:counter(0/0.-1.MistEffect)])) forever +auto=@each opponent combatends:all(creature[attacking]|opponentbattlefield)) transforms((,newability[counter(0/0.1.MistEffect)],newability[@each my end restriction{didntattack}:counter(0/0.-1.MistEffect)])) forever +auto=lord(creature[counter{0/0.1.MistEffect}]) cantattack +text=Cumulative upkeep {1} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.) -- Creatures that attacked during their controller's last turn can't attack. +type=Land +[/card] +[card] name=Hammer Dropper abilities=mentor auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) @@ -21256,6 +21395,13 @@ mana={1}{R}{R} type=Sorcery [/card] [card] +name=Harness the Storm +auto=@movedto(*[instant;sorcery]|mystack) from(myhand):all(trigger[to]) transforms((,newability[if casted(this) then may name(Cast from graveyard) target(*[share!name!]|mygraveyard) canplayfromgraveyard ueot])) oneshot +text=Whenever you cast an instant or sorcery spell from your hand, you may cast target card with the same name as that spell from your graveyard. (You still pay its costs.) +mana={2}{R} +type=Enchantment +[/card] +[card] name=Harrier Naga mana={2}{G} type=Creature @@ -21539,6 +21685,17 @@ mana={W} type=Instant [/card] [card] +name=Heart Wolf +abilities=first strike +auto={T}:restriction{during battle} name(Choose dwarf) name(Choose dwarf) target(creature[dwarf]|mybattlefield) transforms((,newability[2/0],newability[first strike],newability[@movedto(this|nonbattlezone) from(mybattlefield):sacrifice target(Heart Wolf[tapped]|mybattlefield)])) ueot +text=First strike -- {T}: Target Dwarf creature gets +2/+0 and gains first strike until end of turn. When that creature leaves the battlefield this turn, sacrifice Heart Wolf. Activate this ability only during combat. +mana={3}{R} +type=Creature +subtype=Wolf +power=2 +toughness=2 +[/card] +[card] name=Heart-Piercer Manticore other={2}{R}{R}{S(other creature|mybattlefield)} name(Sacrifice a creature) otherrestriction=type(creature|myBattlefield)~morethan~0 @@ -21597,6 +21754,34 @@ mana={2}{R}{W} type=Instant [/card] [card] +name=Heat Wave +auto=cumulativeupcost[{R}] sacrifice +auto=this(variable{type:creature:opponentbattlefield}=1) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:1])) +auto=this(variable{type:creature:opponentbattlefield}=2) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:2])) +auto=this(variable{type:creature:opponentbattlefield}=3) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:3])) +auto=this(variable{type:creature:opponentbattlefield}=4) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:4])) +auto=this(variable{type:creature:opponentbattlefield}=5) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:5])) +auto=this(variable{type:creature:opponentbattlefield}=6) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:6])) +auto=this(variable{type:creature:opponentbattlefield}=7) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:7])) +auto=this(variable{type:creature:opponentbattlefield}=8) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:8])) +auto=this(variable{type:creature:opponentbattlefield}=9) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:9])) +auto=this(variable{type:creature:opponentbattlefield}=10) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:10])) +auto=this(variable{type:creature:opponentbattlefield}=11) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:11])) +auto=this(variable{type:creature:opponentbattlefield}=12) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:12])) +auto=this(variable{type:creature:opponentbattlefield}=13) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:13])) +auto=this(variable{type:creature:opponentbattlefield}=14) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:14])) +auto=this(variable{type:creature:opponentbattlefield}=15) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:15])) +auto=this(variable{type:creature:opponentbattlefield}=16) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:16])) +auto=this(variable{type:creature:opponentbattlefield}=17) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:17])) +auto=this(variable{type:creature:opponentbattlefield}=18) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:18])) +auto=this(variable{type:creature:opponentbattlefield}=19) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:19])) +auto=this(variable{type:creature:opponentbattlefield}=20) lord(creature[-blue]|opponentbattlefield) transforms((,newability[blockcost:20])) +auto=lord(creature[blue]|opponentbattlefield) transforms((,newability[cantblock])) +text=Cumulative upkeep {R} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.) -- Blue creatures can't block creatures you control. -- Nonblue creatures can't block creatures you control unless their controller pays 1 life for each blocking creature he or she controls. +mana={2}{R} +type=Enchantment +[/card] +[card] name=Heaven // Earth auto=damage:X all(creature[flying]) autograveyard={X}{R}{R}{E}:damage:X all(creature[-flying]) asSorcery @@ -21841,6 +22026,16 @@ power=6 toughness=6 [/card] [card] +name=Herald of the Host +abilities=flying,vigilance +text=Flying, vigilance -- Myriad (Whenever this creature attacks, for each opponent other than defending player, you may put a token that's a copy of this creature onto the battlefield tapped and attacking that player or a planeswalker he or she controls. Exile the tokens at end of combat.) +mana={3}{W}{W} +type=Creature +subtype=Angel +power=4 +toughness=4 +[/card] +[card] name=Herald of the Sun abilities=flying auto={3}{W}:counter(1/1,1) target(other creature[flying]|mybattlefield) @@ -21969,6 +22164,17 @@ mana={2}{R}{W} type=Sorcery [/card] [card] +name=Hex Parasite +auto={X}{B}:name(Pay B) name(Pay B) thisforeach(X>0) target(*[counter{any}]|battlefield) removesinglecountertype(1) && all(this) 1/0 ueot +auto={X}{L:2}:name(Pay 2 life) name(Pay 2 life) thisforeach(X>0) target(*[counter{any}]|battlefield) removesinglecountertype(1) && all(this) 1/0 ueot +text={X}{PB}: Remove up to X counters from target permanent. For each counter removed this way, Hex Parasite gets +1/+0 until end of turn. ({PB} can be paid with either {B} or 2 life.) +mana={1} +type=Artifact Creature +subtype=Insect +power=1 +toughness=1 +[/card] +[card] name=Hexdrinker auto={1}:counter(0/0,1,Level) asSorcery auto=this(counter{0/0.3.Level}) 2/3 @@ -22188,6 +22394,17 @@ power=4 toughness=4 [/card] [card] +name=Hollow Warrior +abilities=cantattack,cantblock,cantpwattack +auto={T(*[-attacking]|mybattlefield)}:transforms((,newability[-cantattack],newability[-cantpwattack],newability[-cantblock])) ueot +text=Hollow Warrior can't attack or block unless you tap an untapped creature you control not declared as an attacking or blocking creature this combat. +mana={4} +type=Artifact Creature +subtype=Golem Warrior +power=4 +toughness=4 +[/card] +[card] name=Hollowhead Sliver auto=lord(sliver|mybattlefield) {T}{D(*|myhand)}:draw:1 text=Sliver creatures you control have " {T}, Discard a card: Draw a card." @@ -22279,6 +22496,16 @@ power=3 toughness=2 [/card] [card] +name=Hooded Horror +auto=@each my combatbegins restriction{compare(type:creature:opponentbattlefieldplus1plusend)~morethan~compare(type:creature:mybattlefield)}:transforms((,newability[unblockable])) ueot +text=Hooded Horror can't be blocked as long as defending player controls the most creatures or is tied for the most. +mana={4}{B} +type=Creature +subtype=Horror +power=4 +toughness=4 +[/card] +[card] name=Hope Tender auto={1}{T}:untap target(land) auto=@exerted(this):untap target(land) @@ -22747,6 +22974,17 @@ power=2 toughness=5 [/card] [card] +name=Hundred-Handed One +abilities=vigilance +auto=this(cantargetcard(*[-monstrous]) {3}{W}{W}{W}:becomes(monstrous) forever && counter(1/1,3) && transforms((,newability[reach])) forever +text=Vigilance -- {3}{W}{W}{W}: Monstrosity 3. (If this creature isn't monstrous, put three +1/+1 counters on it and it becomes monstrous.) -- As long as Hundred-Handed One is monstrous, it has reach and can block an additional ninety-nine creatures each combat. +mana={2}{W}{W} +type=Creature +subtype=Giant +power=3 +toughness=5 +[/card] +[card] name=Hungering Hydra abilities=oneblocker auto=counter(1/1,X) @@ -22781,6 +23019,14 @@ mana={2}{R} type=Instant [/card] [card] +name=Hungry Hungry Heifer +auto=@each my upkeep:if type(*[counter{any}]|mybattlefield)~equalto~0 then sacrifice all(this) else ability!$name(Choose one) choice name(Remove a counter) removesinglecountertype(1) target(*[counter{any}]|mybattlefield) _ choice name(Sacrifice) sacrifice all(mystored)!$ controller +text=During your upkeep, remove a counter from any card you control or sacrifice Hungry Hungry Heifer. +mana={2}{G} +type=Summon +subtype=Cow +[/card] +[card] name=Hungry Lynx abilities=deathtouch auto=lord(cat|myBattlefield) protection from(rat) @@ -23172,6 +23418,17 @@ mana={X}{R} type=Sorcery [/card] [card] +name=Illuminated Folio +auto=this(variable{type:*[blue]:myhand}>1) {1}{T}:draw:1 controller +auto=this(variable{type:*[red]:myhand}>1) {1}{T}:draw:1 controller +auto=this(variable{type:*[black]:myhand}>1) {1}{T}:draw:1 controller +auto=this(variable{type:*[green]:myhand}>1) {1}{T}:draw:1 controller +auto=this(variable{type:*[white]:myhand}>1) {1}{T}:draw:1 controller +text={1}, {T}, Reveal two cards from your hand that share a color: Draw a card. +mana={5} +type=Artifact +[/card] +[card] name=Illuna, Apex of Wishes abilities=flying,trample,mutate otherrestriction=type(creature[-human]|mybattlefield)~morethan~0 @@ -23261,6 +23518,16 @@ mana={2}{U}{U} type=Instant [/card] [card] +name=Imi Statue +auto=lord(artifact|mybattlefield) doesnotuntap +auto=lord(artifact|opponentbattlefield) doesnotuntap +auto=@each my untap:ability$!name(Untap an artifact) name(Untap an artifact) untap target(artifact[tapped]|mybattlefield)!$ controller +auto=@each opponent untap:ability$!name(Untap an artifact) name(Untap an artifact) untap target(artifact[tapped]|mybattlefield)!$ opponent +text=Players can't untap more than one artifact during their untap steps. +mana={3} +type=Artifact +[/card] +[card] name=Imminent Doom auto=counter(0/0,1,doom) auto=this(counter{0/0.1.doom}) transforms((,newability[@movedTo(*[manacost=1]|mystack):counter(0/0.1.doom)])) @@ -23300,6 +23567,17 @@ mana={2}{R} type=Enchantment [/card] [card] +name=Immobilizer Eldrazi +abilities=devoid +auto={2}{C}:all(creature|battlefield) transforms((,newability[if compare(toughness)~morethan~compare(power) then cantblock ueot])) ueot +text=Devoid (This card has no color.) -- {2}{C}: Each creature with toughness greater than its power can't block this turn. ({C} represents colorless mana.) +mana={1}{R} +type=Creature +subtype=Eldrazi Drone +power=2 +toughness=1 +[/card] +[card] name=Immolating Gyre auto=damage:type:*[instant;sorcery]:mygraveyard all(creature|opponentBattlefield) auto=damage:type:*[instant;sorcery]:mygraveyard all(planeswalker|opponentBattlefield) @@ -23587,6 +23865,35 @@ mana={4}{G}{G}{G}{G} type=Sorcery [/card] [card] +name=Increasing Vengeance +auto=ifnot gravecast then name(copy spell) target(*[instant;sorcery]|mystack) castcard(copied noevent) +auto=if gravecast then name(copy spell twice) target(*[instant;sorcery]|mystack) castcard(copied noevent) && castcard(copied noevent) +flashback={3}{R}{R} +text=Copy target instant or sorcery spell you control. If Increasing Vengeance was cast from a graveyard, copy that spell twice instead. You may choose new targets for the copies. -- Flashback {3}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) +mana={R}{R} +type=Instant +[/card] +[card] +name=Incremental Blight +restriction=type(creature|battlefield)~morethan~2 +auto=ability$!name(Add 1 counter) name(Add 1 counter) counter(-1/-1) target(creature|battlefield)!$ controller +auto=ability$!name(Add 2 counters) name(Add 2 counters) counter(-1/-1,2) target(creature|battlefield)!$ controller +auto=ability$!name(Add 3 counters) name(Add 3 counters) counter(-1/-1,3) target(creature|battlefield)!$ controller +text=Put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. +mana={3}{B}{B} +type=Sorcery +[/card] +[card] +name=Incremental Growth +restriction=type(creature|battlefield)~morethan~2 +auto=ability$!name(Add 1 counter) name(Add 1 counter) counter(1/1) target(creature|battlefield)!$ controller +auto=ability$!name(Add 2 counters) name(Add 2 counters) counter(1/1,2) target(creature|battlefield)!$ controller +auto=ability$!name(Add 3 counters) name(Add 3 counters) counter(1/1,3) target(creature|battlefield)!$ controller +text=Put a +1/+1 counter on target creature, two +1/+1 counters on another target creature, and three +1/+1 counters on a third target creature. +mana={3}{G}{G} +type=Sorcery +[/card] +[card] name=Incubation // Incongruity abilities=flash other={1}{G}{U} name(Incongruity) @@ -23642,6 +23949,14 @@ type=Land subtype=Plains Swamp Forest [/card] [card] +name=Indomitable Creativity +target=*[creature;artifact]|battlefield +auto=transforms((,newability[destroy],newability[reveal:1 revealzone(mylibrary) revealuntil(*[creature;artifact]|mylibrary) optionone choice name(Exile Card) all(*[creature;artifact]|reveal) moveto(myexile) and!( moveto(mybattlefield) )! optiononeend optiontwo choice name(Put back) all(*|reveal) moveto(mylibrary) and!(shuffle)! optiontwoend revealend])) oneshot +text=Destroy X target artifacts and/or creatures. For each permanent destroyed this way, its controller reveals cards from the top of his or her library until an artifact or creature card is revealed and exiles that card. Those players put the exiled cards onto the battlefield, then shuffle their libraries. +mana={X}{R}{R}{R} +type=Sorcery +[/card] +[card] name=Induce Despair auto=if type(creature[manacost=1]|myHand)~morethan~0 then choice name(Reveal creature with 1 mana cost) target(creature) -1/-1 ueot auto=if type(creature[manacost=2]|myHand)~morethan~0 then choice name(Reveal creature with 2 mana cost) target(creature) -2/-2 ueot @@ -23744,6 +24059,16 @@ type=Enchantment subtype=Aura [/card] [card] +name=Infernal Darkness +auto=cumulativeupcost[{B}{L:1}] sacrifice +auto=all(land|battlefield) loseabilities && all(land|battlefield) losesubtypesof(land) && all(land|battlefield) transforms((swamp)) ueot +auto=@each untap:all(land|battlefield) loseabilities && all(land|battlefield) losesubtypesof(land) && all(land|battlefield) transforms((swamp)) ueot +auto=@movedTo(land|battlefield):all(trigger[to]) loseabilities && all(trigger[to]) losesubtypesof(land) && all(trigger[to]) transforms((swamp)) ueot +text=Cumulative upkeep—Pay {B} and 1 life. (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.) -- If a land is tapped for mana, it produces {B} instead of any other type. +mana={2}{B}{B} +type=Enchantment +[/card] +[card] name=Infernal Harvest auto=if type(swamp|myBattlefield)~morethan~0 then choice name(Move 1 Swamp) name(Move 1 Swamp) ability$!name(Choose a creature) damage:1 target(creature)!$ controller && moveto(ownerhand) target(swamp|myBattlefield) auto=if type(swamp|myBattlefield)~morethan~1 then choice name(Move 2 Swamps) name(Move 2 Swamps) ability$!name(Choose a creature) damage:1 target(creature)!$ controller && moveto(ownerhand) target(<2>swamp|myBattlefield) @@ -23822,6 +24147,17 @@ power=6 toughness=6 [/card] [card] +name=Inferno Trap +target=creature +other={R} name(Pay R) +otherrestriction=type(creature[attacking]|opponentBattlefield)~morethan~1,compare(lifelost)~morethan~1 +auto=damage:4 +text=If you've been dealt damage by two or more creatures this turn, you may pay {R} rather than pay Inferno Trap's mana cost. -- Inferno Trap deals 4 damage to target creature. +mana={3}{R} +type=Instant +subtype=Trap +[/card] +[card] name=Infinity Elemental text=(This creature has INFINITE POWER.) mana={4}{R}{R}{R} @@ -23831,6 +24167,18 @@ power=999999 toughness=5 [/card] [card] +name=Infinite Hourglass +auto=@each my upkeep:counter(0/0,1,Time) all(this) +auto={3}:counter(0/0,-1,Time) myupkeeponly +auto={3}:counter(0/0,-1,Time) opponentupkeeponly +auto=foreach(land[-tapped]|opponentBattlefield) transforms((,newability[ability$!name(Pay 3) pay[[{3}]] name(Pay 3) counter(0/0.-1.Time) notatarget(Infinite Hourglass|opponentBattlefield)ueot?donothing!$ opponent])) forever myupkeeponly +auto=foreach(land[-tapped]|opponentBattlefield) transforms((,newability[ability$!name(Pay 3) pay[[{3}]] name(Pay 3) counter(0/0.-1.Time) notatarget(Infinite Hourglass|opponentBattlefield)ueot?donothing!$ opponent])) forever opponentupkeeponly +auto=thisforeach(counter{0/0.1.Time}>0) lord(creature|battlefield) 1/0 +text=At the beginning of your upkeep, put a time counter on Infinite Hourglass. -- All creatures get +1/+0 for each time counter on Infinite Hourglass. -- {3}: Remove a time counter from Infinite Hourglass. Any player may activate this ability but only during any upkeep step. +mana={4} +type=Artifact +[/card] +[card] name=Infuriate auto=3/2 target(creature) ueot text=Target creature gets +3/+2 until end of turn. @@ -23937,6 +24285,18 @@ power=0 toughness=2 [/card] [card] +name=Inquisitor's Flail +auto={2}:equip +auto=@combatdamageof(player) from(mytgt):damage:thatmuch controller +auto=@combatdamagefoeof(player) from(mytgt):damage:thatmuch opponent +auto=@combatdamaged(creature) from(mytgt):all(trigger[to]) damage:thatmuch +auto=teach(creature) transforms((,newability[@combatdamaged(this):damage:thatmuch all(this)])) +text=If equipped creature would deal combat damage, it deals double that damage instead. -- If another creature would deal combat damage to equipped creature, it deals double that damage to equipped creature instead. -- Equip {2} +mana={2} +type=Artifact +subtype=Equipment +[/card] +[card] name=Insatiable Appetite target=creature other={1}{G}{S(food|myBattlefield)} name(Sacrifice Food) @@ -24198,6 +24558,20 @@ mana={U} type=Instant [/card] [card] +name=Intet, the Dreamer +abilities=flying +auto=@combatdamageof(player) from(this):pay({2}{U}) all(*[zpos=1]|mylibrary) moveto(myexile) and!( counter(0/0,1,IntetExiled) )! +auto=@combatdamagefoeof(player) from(this):pay({2}{U}) all(*[zpos=1]|mylibrary) moveto(myexile) and!( counter(0/0,1,IntetExiled) )! +auto={0}:name(Cast card from exile) name(Cast card from exile) target(*[counter{0/0.1.IntetExiled}]|myexile) activate castcard(normal) +auto=@movedto(this|nonbattlezone) from(mybattlefield):all(*[counter{0/0.1.IntetExiled}]|myexile) counter(0/0,-1,IntetExiled) +text=Flying -- Whenever Intet, the Dreamer deals combat damage to a player, you may pay {2}{U}. If you do, exile the top card of your library face down. You may look at that card for as long as it remains exiled. You may play that card without paying its mana cost for as long as Intet remains on the battlefield. +mana={3}{U}{R}{G} +type=Legendary Creature +subtype=Dragon +power=6 +toughness=6 +[/card] +[card] name=Into the Story auto=aslongas(*|opponentgraveyard) altercost(colorless,-3) >6 auto=draw:4 controller @@ -24224,6 +24598,14 @@ power=3 toughness=3 [/card] [card] +name=Intuition +auto=target(*|mylibrary) moveto(myhand) +auto=ability$!name(Put in graveyard) name(Put in graveyard) target(<2>*|opponentlibrary) moveto(opponentgraveyard)!$ opponent +text=Search your library for any three cards and reveal them. Target opponent chooses one. Put that card into your hand and the rest into your graveyard. Then shuffle your library. +mana={2}{U} +type=Instant +[/card] +[card] name=Invade the City auto=_AMASS_(type:*[instant;sorcery]:mygraveyard) text=Amass X, where X is the number of instant and sorcery cards in your graveyard. (Put X +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) @@ -24601,6 +24983,14 @@ mana={3} type=Artifact [/card] [card] +name=Jabari's Influence +target=creature[attacking;-artifact;-black]|opponentBattlefield +auto=moveto(mybattlefield) and!( counter(-1/0) )! +text=Cast Jabari's Influence only after combat. -- Gain control of target nonartifact, nonblack creature that attacked you this turn and put a -1/-0 counter on it. +mana={3}{W}{W} +type=Instant +[/card] +[card] name=Jace's Defeat target=*[blue]|stack auto=fizzle @@ -24684,6 +25074,17 @@ mana={0} type=Artifact [/card] [card] +name=Jackknight +auto=@movedto(artifact|mybattlefield):counter(1/1) all(this) +auto=@movedto(artifact[contraption]|mybattlefield):transforms((,newability[lifelink])) ueot +text=Whenever another artifact enters the battlefield under your control, put a +1/+1 counter on Jackknight. If that artifact is a Contraption, Jackknight gains lifelink until end of turn. +mana={1}{W} +type=Artifact Creature +subtype=Cyborg Knight +power=1 +toughness=1 +[/card] +[card] name=Jade Bearer auto=counter(1/1) target(other merfolk|myBattlefield) text=When Jade Bearer enters the battlefield, put a +1/+1 counter on another target Merfolk you control. @@ -24823,7 +25224,7 @@ type=Legendary Sorcery [/card] [card] name=Jeering Homunculus -auto=may target(creature|opponentBattlefield) mustattack uynt +auto=may name(Goad creature) target(creature|battlefield) transforms((,newability[mustattack])) uynt text=When Jeering Homunculus enters the battlefield, you may goad target creature. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.) mana={1}{U} type=Creature @@ -25728,6 +26129,16 @@ power=2 toughness=2 [/card] [card] +name=Kemba's Legion +abilities=vigilance +text=Vigilance -- Kemba's Legion can block an additional creature for each Equipment attached to Kemba's Legion. +mana={5}{W}{W} +type=Creature +subtype=Cat Soldier +power=4 +toughness=6 +[/card] +[card] name=Kenrith's Transformation target=creature auto=teach(creature) loseabilities @@ -25765,6 +26176,19 @@ power=4 toughness=3 [/card] [card] +name=Keranos, God of Storms +abilities=indestructible +auto=this(variable{izzet}<7) transforms((removetypes,newability[becomes(Legendary Enchantment)])) +auto=this(variable{izzet}>6) transforms((Legendary Enchantment Creature)) +auto=@each my draw:if type(land[fresh]|myhand)~morethan~0 then draw:1 controller else name(Deals 3 damage) name(Deals 3 damage) damage:3 target(creature,player) +text=Indestructible -- As long as your devotion to blue and red is less than seven, Keranos isn't a creature. -- Reveal the first card you draw on each of your turns. Whenever you reveal a land card this way, draw a card. Whenever you reveal a nonland card this way, Keranos deals 3 damage to target creature or player. +mana={3}{U}{R} +type=Legendary Enchantment Creature +subtype=God +power=6 +toughness=5 +[/card] +[card] name=Keskit, the Flesh Sculptor abilities=partner auto={T}{S(other *[creature;artifact]|mybattlefield)}{S(other *[creature;artifact]|mybattlefield)}{S(other *[creature;artifact]|mybattlefield)}:name(Look) reveal:3 optionone name(Get 2 cards) target(<2>*|reveal) moveto(myhand) optiononeend optiontwo name(put in graveyard) target(<3>*|reveal) moveto(mygraveyard) optiontwoend revealend @@ -25917,6 +26341,13 @@ power=3 toughness=4 [/card] [card] +name=Kill Switch +auto={2}{T}:all(other artifact|battlefield) transforms((,newability[tap(noevent)],newability[@each my untap:if type(Kill Switch[tapped]|battlefield)~morethan~0 then tap(noevent)])) forever +text={2}, {T}: Tap all other artifacts. They don't untap during their controllers' untap steps for as long as Kill Switch remains tapped. +mana={3} +type=Artifact +[/card] +[card] name=Killing Wave auto=all (creature) transforms((,newability[upcost[{L:X}] sacrifice])) text=For each creature, its controller sacrifices it unless they pay X life. @@ -43650,7 +44081,7 @@ toughness=2 [/card] [card] name=Sinuous Vermin -auto=@this(cantargetcard(*[-monstrous]) {3}{B}{B}:becomes(monstrous) forever && counter(1/1, 3) && transforms((,newability[menace])) forever +auto=this(cantargetcard(*[-monstrous]) {3}{B}{B}:becomes(monstrous) forever && counter(1/1, 3) && transforms((,newability[menace])) forever text={3}{B}{B}: Monstrosity 3. (If this creature isn't monstrous, put three +1/+1 counters on it and it becomes monstrous.) -- As long as Sinuous Vermin is monstrous, it has menace. (It can't be blocked except by two or more creatures.) mana={1}{B} type=Creature diff --git a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt index 65f7c5e74..ceaa3c01c 100644 --- a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt +++ b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt @@ -3,40 +3,33 @@ grade=borderline #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 [card] -primitive=Abian, Luvion Usurper -id=476217 -rarity=R -[/card] -[card] name=Abian, Luvion Usurper auto=counter(0/0,5,loyalty) -auto=lifeset:type:counter(0/0,Loyalty):this:myBattlefield -auto=@counterremoved(0/0,1,Loyalty) from(planeswalker[Abian]|myBattlefield):life:-thatmuch controller -auto=@counteradded(0/0,1,Loyalty) from(planeswalker[Abian]|myBattlefield):life:thatmuch controller -auto=@lifelostof(player):removesinglecountertype(thatmuch) from(planeswalker[Abian]|myBattlefield) -auto=@lifeof(player):counter(0/0,thatmuch,Loyalty) all(this) -auto={C(0/0,2,Loyalty)}:name(+3: Discard your hand and draw a card equal to highest power) reject all(*|myhand) && draw:power:highest:creature:mybattlefield controller -auto={C(0/0,-3,Loyalty)}:name(+1: Create a 3/2 Spirit) token(Spirit,Creature Spirit,3/2,red,green) -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: Deals 2 damage to any target) damage:2 target(player,creature,planeswalker) -auto={C(0/0,-3,Loyalty)}:name(-3: Deals 3 damage to any target) damage:3 target(player,creature,planeswalker) -auto={C(0/0,-4,Loyalty)}:name(-4: Deals 4 damage to any target) damage:4 target(player,creature,planeswalker) -auto={C(0/0,-5,Loyalty)}:name(-5: Deals 5 damage to any target) damage:5 target(player,creature,planeswalker) -auto={C(0/0,-6,Loyalty)}:name(-6: Deals 6 damage to any target) damage:6 target(player,creature,planeswalker) -auto={C(0/0,-7,Loyalty)}:name(-7: Deals 7 damage to any target) damage:7 target(player,creature,planeswalker) -auto={C(0/0,-8,Loyalty)}:name(-8: Deals 8 damage to any target) damage:8 target(player,creature,planeswalker) -auto={C(0/0,-9,Loyalty)}:name(-9: Deals 9 damage to any target) damage:9 target(player,creature,planeswalker) -auto={C(0/0,-10,Loyalty)}:name(-10: Deals 10 damage to any target) damage:10 target(player,creature,planeswalker) -auto={C(0/0,-11,Loyalty)}:name(-11: Deals 11 damage to any target) damage:11 target(player,creature,planeswalker) -auto={C(0/0,-12,Loyalty)}:name(-12: Deals 12 damage to any target) damage:12 target(player,creature,planeswalker) -auto={C(0/0,-13,Loyalty)}:name(-13: Deals 13 damage to any target) damage:13 target(player,creature,planeswalker) -auto={C(0/0,-14,Loyalty)}:name(-14: Deals 14 damage to any target) damage:14 target(player,creature,planeswalker) -auto={C(0/0,-15,Loyalty)}:name(-15: Deals 15 damage to any target) damage:15 target(player,creature,planeswalker) -auto={C(0/0,-16,Loyalty)}:name(-16: Deals 16 damage to any target) damage:16 target(player,creature,planeswalker) -auto={C(0/0,-17,Loyalty)}:name(-17: Deals 17 damage to any target) damage:17 target(player,creature,planeswalker) -auto={C(0/0,-18,Loyalty)}:name(-18: Deals 18 damage to any target) damage:18 target(player,creature,planeswalker) -auto={C(0/0,-19,Loyalty)}:name(-19: Deals 19 damage to any target) damage:19 target(player,creature,planeswalker) -auto={C(0/0,-20,Loyalty)}:name(-20: Deals 20 damage to any target) damage:20 target(player,creature,planeswalker) +auto=lifeset:5 controller +auto=@lifelostof(player) from(*[-Abian]):counter(0/0,-thatmuch,Loyalty) all(this) +auto=@lifeof(player) from(*[-Abian]):counter(0/0,thatmuch,Loyalty) all(this) +auto={C(0/0,3,Loyalty)}:name(+3: Discard your hand and draw a card equal to highest power) reject all(*|myhand) && draw:power:highest:creature:mybattlefield controller && life:3 controller +auto={C(0/0,1,Loyalty)}:name(+1: Create a 3/2 Spirit) token(Spirit,Creature Spirit,3/2,red,green) && life:1 controller +auto={C(0/0,-1,Loyalty)}{L:1}:name(-1: Deals 1 damage to any target) damage:1 target(player,creature,planeswalker) +auto={C(0/0,-2,Loyalty)}{L:2}:name(-2: Deals 2 damage to any target) damage:2 target(player,creature,planeswalker) +auto={C(0/0,-3,Loyalty)}{L:3}:name(-3: Deals 3 damage to any target) damage:3 target(player,creature,planeswalker) +auto={C(0/0,-4,Loyalty)}{L:4}:name(-4: Deals 4 damage to any target) damage:4 target(player,creature,planeswalker) +auto={C(0/0,-5,Loyalty)}{L:5}:name(-5: Deals 5 damage to any target) damage:5 target(player,creature,planeswalker) +auto={C(0/0,-6,Loyalty)}{L:6}:name(-6: Deals 6 damage to any target) damage:6 target(player,creature,planeswalker) +auto={C(0/0,-7,Loyalty)}{L:7}:name(-7: Deals 7 damage to any target) damage:7 target(player,creature,planeswalker) +auto={C(0/0,-8,Loyalty)}{L:8}:name(-8: Deals 8 damage to any target) damage:8 target(player,creature,planeswalker) +auto={C(0/0,-9,Loyalty)}{L:9}:name(-9: Deals 9 damage to any target) damage:9 target(player,creature,planeswalker) +auto={C(0/0,-10,Loyalty)}{L:10}:name(-10: Deals 10 damage to any target) damage:10 target(player,creature,planeswalker) +auto={C(0/0,-11,Loyalty)}{L:11}:name(-11: Deals 11 damage to any target) damage:11 target(player,creature,planeswalker) +auto={C(0/0,-12,Loyalty)}{L:12}:name(-12: Deals 12 damage to any target) damage:12 target(player,creature,planeswalker) +auto={C(0/0,-13,Loyalty)}{L:13}:name(-13: Deals 13 damage to any target) damage:13 target(player,creature,planeswalker) +auto={C(0/0,-14,Loyalty)}{L:14}:name(-14: Deals 14 damage to any target) damage:14 target(player,creature,planeswalker) +auto={C(0/0,-15,Loyalty)}{L:15}:name(-15: Deals 15 damage to any target) damage:15 target(player,creature,planeswalker) +auto={C(0/0,-16,Loyalty)}{L:16}:name(-16: Deals 16 damage to any target) damage:16 target(player,creature,planeswalker) +auto={C(0/0,-17,Loyalty)}{L:17}:name(-17: Deals 17 damage to any target) damage:17 target(player,creature,planeswalker) +auto={C(0/0,-18,Loyalty)}{L:18}:name(-18: Deals 18 damage to any target) damage:18 target(player,creature,planeswalker) +auto={C(0/0,-19,Loyalty)}{L:19}:name(-19: Deals 19 damage to any target) damage:19 target(player,creature,planeswalker) +auto={C(0/0,-20,Loyalty)}{L:20}:name(-20: Deals 20 damage to any target) damage:20 target(player,creature,planeswalker) text=As Abian, Luvion Usurper enters the battlefield, you become Abian. (Your life total becomes equal to their loyalty. You can activate the loyalty abilities by spending or gaining life.) -- +3: Discard your hand, then draw cards equal to the greatest power among creatures you control. -- +1: Create a 3/2 red and green Spirit creature token. -- −X: You deal X damage to any target. mana={5}{R}{G} type=Legendary Planeswalker @@ -320,15 +313,12 @@ type=Legendary Planeswalker subtype=Ashiok [/card] [card] -primitive=B.O.B. (Bevy of Beebles) -id=479414 -rarity=M -[/card] -[card] name=B.O.B. (Bevy of Beebles) -auto=counter(0/0,type:creature[Beebles]:myBattlefield,Loyalty) cdaactive +auto=counter(0/0,4,Loyalty) auto=token(Beeble,Creature Beeble,1/1,blue)*4 -auto={C(0/0,1,Loyalty)}:name(+1: X Beebles can't be blocked) target(creature[Beeble]|myBattlefield) unblockable ueot +auto=@counteradded(0/0,1,Loyalty) from(this):token(Beeble,Creature Beeble,1/1,blue) +auto=@counterremoved(0/0,1,Loyalty) from(this):sacrifice target(beeble|myBattlefield) +auto={C(0/0,1,Loyalty)}:name(+1: X Beebles can't be blocked) target(creature[Beeble]|myBattlefield) transforms((,newability[unblockable])) ueot auto={C(0/0,-1,Loyalty)}:name(-1: Draw a card) draw:1 controller text=As B.O.B. enters the battlefield, create four 1/1 blue Beeble creature tokens. -- The number of loyalty counters on B.O.B. is equal to the number of Beebles you control. (Create or sacrifice Beebles whenever B.O.B. gains or loses loyalty.) -- +1: Up to X target Beebles can't be blocked this turn, where X is the number of cards in your hand. -- -1: Draw a card. mana={3}{U}{U} @@ -735,18 +725,9 @@ type=Legendary Planeswalker subtype=Dovin [/card] [card] -primitive=Personal Decoy -id=476226 -rarity=R -[/card] -[card] name=Personal Decoy -abilities=cantlose +abilities=exiledeath auto=counter(0/0,lifetotal,loyalty) -auto=@damaged(player) from(*|stack,battlefield,graveyard): if compare(lifetotal)~lessthan~0 then lifeset:1 controller && moveTo(exile) all(this) -auto=@lifelostof(player): if compare(lifetotal)~lessthan~0 then lifeset:1 controller && moveTo(exile) all(this) -auto=@drawof(player): if compare(library)~lessthan~0 then moveTo(myLibrary) notAtarget(*|myHand) && moveTo(exile) all(this) -auto=@movedTo(*[Coalition Victori;Approach of the Second Sun]|opponentStack):all(trigger[to]) fizzleto(ownerHand) && moveTo(exile) all(this) 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 diff --git a/projects/mtg/bin/Res/sets/primitives/unsupported.txt b/projects/mtg/bin/Res/sets/primitives/unsupported.txt index 7c3a4a83d..634f9284f 100644 --- a/projects/mtg/bin/Res/sets/primitives/unsupported.txt +++ b/projects/mtg/bin/Res/sets/primitives/unsupported.txt @@ -4608,13 +4608,6 @@ type=Summon subtype=Ogre [/card] [card] -name=Ghostfire Blade -text=Equipped creature gets +2/+2. -- Equip {3} -- Ghostfire Blade's equip ability costs {2} less to activate if it targets a colorless creature. -mana={1} -type=Artifact -subtype=Equipment -[/card] -[card] name=Ghostly Flame text=Black and/or red permanents and spells are colorless sources of damage. mana={B}{R} @@ -4655,15 +4648,6 @@ power=0 toughness=3 [/card] [card] -name=Giant Turtle -text=Giant Turtle can't attack if it attacked during your last turn. -mana={1}{G}{G} -type=Creature -subtype=Turtle -power=2 -toughness=4 -[/card] -[card] name=Gideon's Intervention text=As Gideon's Intervention enters the battlefield, choose a card name. -- Your opponents can't cast spells with the chosen name. -- Prevent all damage that would be dealt to you and permanents you control by sources with the chosen name. mana={2}{W}{W} @@ -4711,15 +4695,6 @@ power=3 toughness=3 [/card] [card] -name=Gilder Bairn -text={2}{GU}, {Q}: For each counter on target permanent, put another of those counters on that permanent. ({Q} is the untap symbol.) -mana={1}{GU}{GU} -type=Creature -subtype=Ouphe -power=1 -toughness=3 -[/card] -[card] name=Gilt-Leaf Ambush text=Put two 1/1 green Elf Warrior creature tokens onto the battlefield. Clash with an opponent. If you win, those creatures gain deathtouch until end of turn. (Each clashing player reveals the top card of his or her library, then puts that card on the top or bottom. A player wins if his or her card had a higher converted mana cost. Any amount of damage a creature with deathtouch deals to a creature is enough to destroy it.) mana={2}{G} @@ -4727,16 +4702,6 @@ type=Tribal Instant subtype=Elf [/card] [card] -name=Gilt-Leaf Winnower -abilities=menace -text=Menace (This creature can't be blocked except by two or more creatures.) -- When Gilt-Leaf Winnower enters the battlefield, you may destroy target non-Elf creature whose power and toughness aren't equal. -mana={3}{B}{B} -type=Creature -subtype=Elf Warrior -power=4 -toughness=3 -[/card] -[card] name=Gimme Five text=You gain 1 life for each person who high-fives you in the next thirty seconds. Each player in a silver-bordered game who high-fives you gains 1 life. (Offer high fives. Don't hit people.) mana={W} @@ -4753,13 +4718,6 @@ power=5 toughness=5 [/card] [card] -name=Glacial Plating -text=Enchant creature -- Cumulative upkeep {S{i} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it. {S{i} can be paid with one mana from a snow permanent.) -- Enchanted creature gets +3/+3 for each age counter on Glacial Plating. -mana={2}{W}{W} -type=Snow Enchantment -subtype=Aura -[/card] -[card] name=Glacial Ray text=Glacial Ray deals 2 damage to target creature or player. -- Splice onto Arcane {1}{R} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) mana={1}{R} @@ -4821,16 +4779,6 @@ type=Plane subtype=Mirrodin [/card] [card] -name=Glissa Sunseeker -abilities=first strike -text=First strike -- {T}: Destroy target artifact if its converted mana cost is equal to the amount of mana in your mana pool. -mana={2}{G}{G} -type=Legendary Creature -subtype=Elf -power=3 -toughness=2 -[/card] -[card] name=Glittering Lion text=Prevent all damage that would be dealt to Glittering Lion. -- {3}: Until end of turn, Glittering Lion loses "Prevent all damage that would be dealt to Glittering Lion." Any player may activate this ability. mana={2}{W} @@ -4849,18 +4797,6 @@ power=1 toughness=1 [/card] [card] -name=Global Ruin -text=Each player chooses from the lands he or she controls a land of each basic land type, then sacrifices the rest. -mana={4}{W} -type=Sorcery -[/card] -[card] -name=Gloom -text=White spells cost {3} more to cast. -- Activated abilities of white enchantments cost {3} more to activate. -mana={2}{B} -type=Enchantment -[/card] -[card] name=Gloom Surgeon text=If combat damage would be dealt to Gloom Surgeon, prevent that damage and exile that many cards from the top of your library. mana={1}{B} @@ -4983,15 +4919,6 @@ power=5 toughness=5 [/card] [card] -name=Goblin Racketeer -text=Whenever Goblin Racketeer attacks, you may goad target creature defending player controls. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.) -mana={3}{R} -type=Creature -subtype=Goblin Rogue -power=4 -toughness=2 -[/card] -[card] name=Goblin S.W.A.T. Team text=Say "Goblin S.W.A.T. Team": Put a +1/+1 counter on Goblin S.W.A.T. Team unless an opponent swats the table within five seconds. Play this ability only once each turn. mana={3}{R} @@ -5183,15 +5110,6 @@ mana={1}{W} type=Enchantment [/card] [card] -name=Grenzo, Havoc Raiser -text=Whenever a creature you control deals combat damage to a player, choose one — -- • Goad target creature that player controls. -- • Exile the top card of that player's library. Until end of turn, you may cast that card and you may spend mana as though it were mana of any color to cast it. -mana={R}{R} -type=Legendary Creature -subtype=Goblin Rogue -power=2 -toughness=2 -[/card] -[card] name=Grim Reminder text=Search your library for a nonland card and reveal it. Each opponent who cast a card this turn with the same name as that card loses 6 life. Then shuffle your library. -- {B}{B}: Return Grim Reminder from your graveyard to your hand. Activate this ability only during your upkeep. mana={2}{B} @@ -5207,12 +5125,6 @@ power=2 toughness=2 [/card] [card] -name=Grinning Totem -text={2}, {T}, Sacrifice Grinning Totem: Search target opponent's library for a card and exile it. Then that player shuffles his or her library. Until the beginning of your next upkeep, you may play that card. At the beginning of your next upkeep, if you haven't played it, put it into its owner's graveyard. -mana={4} -type=Artifact -[/card] -[card] name=Grip of Chaos text=Whenever a spell or ability is put onto the stack, if it has a single target, reselect its target at random. (Select from among all legal targets.) mana={4}{R}{R} @@ -5276,16 +5188,6 @@ power=2 toughness=4 [/card] [card] -name=Guardian of the Gateless -abilities=flying -text=Flying -- Guardian of the Gateless can block any number of creatures. -- Whenever Guardian of the Gateless blocks, it gets +1/+1 until end of turn for each creature it's blocking. -mana={4}{W} -type=Creature -subtype=Angel -power=3 -toughness=3 -[/card] -[card] name=Guest List text=Whenever you crank Guest List, target creature gets -X/-X until end of turn, where X is the number of creature cards in its controller's graveyard. type=Artifact @@ -5413,11 +5315,6 @@ mana={1}{W} type=Instant [/card] [card] -name=Halls of Mist -text=Cumulative upkeep {1} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.) -- Creatures that attacked during their controller's last turn can't attack. -type=Land -[/card] -[card] name=Hammerfest Boomtacular text=Whenever you cast a spell with a Goblin Explosioneers watermark, Hammerfest Boomtacular deals 2 damage to any target. mana={3}{R}{R} @@ -5479,12 +5376,6 @@ mana={W} type=Instant [/card] [card] -name=Harness the Storm -text=Whenever you cast an instant or sorcery spell from your hand, you may cast target card with the same name as that spell from your graveyard. (You still pay its costs.) -mana={2}{R} -type=Enchantment -[/card] -[card] name=Harsh Judgment text=As Harsh Judgment enters the battlefield, choose a color. -- If an instant or sorcery spell of the chosen color would deal damage to you, it deals that damage to its controller instead. mana={2}{W}{W} @@ -5543,28 +5434,12 @@ mana={W} type=Instant [/card] [card] -name=Heart Wolf -abilities=first strike -text=First strike -- {T}: Target Dwarf creature gets +2/+0 and gains first strike until end of turn. When that creature leaves the battlefield this turn, sacrifice Heart Wolf. Activate this ability only during combat. -mana={3}{R} -type=Creature -subtype=Wolf -power=2 -toughness=2 -[/card] -[card] name=Heartstone text=Activated abilities of creatures cost {1} less to activate. This effect can't reduce the amount of mana an ability costs to activate to less than one mana. mana={3} type=Artifact [/card] [card] -name=Heat Wave -text=Cumulative upkeep {R} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.) -- Blue creatures can't block creatures you control. -- Nonblue creatures can't block creatures you control unless their controller pays 1 life for each blocking creature he or she controls. -mana={2}{R} -type=Enchantment -[/card] -[card] name=Hedonist's Trove text=When Hedonist's Trove enters the battlefield, exile all cards from target opponent's graveyard. -- You may play land cards exiled with Hedonist's Trove. -- You may cast nonland cards exiled with Hedonist's Trove. You can't cast more than one spell this way each turn. mana={5}{B}{B} @@ -5608,16 +5483,6 @@ power=2 toughness=4 [/card] [card] -name=Herald of the Host -abilities=flying,vigilance -text=Flying, vigilance -- Myriad (Whenever this creature attacks, for each opponent other than defending player, you may put a token that's a copy of this creature onto the battlefield tapped and attacking that player or a planeswalker he or she controls. Exile the tokens at end of combat.) -mana={3}{W}{W} -type=Creature -subtype=Angel -power=4 -toughness=4 -[/card] -[card] name=Heretic's Punishment text={3}{R}: Choose target creature or player, then put the top three cards of your library into your graveyard.Heretic's Punishment deals damage to that creature or player equal to the highest converted mana cost among those cards. mana={4}{R} @@ -5637,15 +5502,6 @@ mana={2}{W} type=Enchantment [/card] [card] -name=Hex Parasite -text={X}{PB}: Remove up to X counters from target permanent. For each counter removed this way, Hex Parasite gets +1/+0 until end of turn. ({PB} can be paid with either {B} or 2 life.) -mana={1} -type=Artifact Creature -subtype=Insect -power=1 -toughness=1 -[/card] -[card] name=Hibernation's End text=Cumulative upkeep {1} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.) -- Whenever you pay Hibernation's End's cumulative upkeep, you may search your library for a creature card with converted mana cost equal to the number of age counters on Hibernation's End and put it onto the battlefield. If you do, shuffle your library. mana={4}{G} @@ -5699,6 +5555,7 @@ type=Sorcery [/card] [card] name=Hogaak, Arisen Necropolis +abilities=trample text=You can't spend mana to cast this spell. -- Convoke, delve (Each creature you tap while casting this spell pays for 1 or one mana of that creature's color. Each card you exile from your graveyard pays for {1}.) -- You may cast Hogaak, Arisen Necropolis from your graveyard. -- Trample mana={5}{BG}{BG} type=Legendary Creature @@ -5727,15 +5584,6 @@ mana={1}{G}{G} type=Enchantment [/card] [card] -name=Hollow Warrior -text=Hollow Warrior can't attack or block unless you tap an untapped creature you control not declared as an attacking or blocking creature this combat. -mana={4} -type=Artifact Creature -subtype=Golem Warrior -power=4 -toughness=4 -[/card] -[card] name=Homing Sliver text=Each Sliver card in each player's hand has slivercycling {3}. -- Slivercycling {3} ({3}, Discard this card: Search your library for a Sliver card, reveal it, and put it into your hand. Then shuffle your library.) mana={2}{R} @@ -5751,15 +5599,6 @@ mana={1}{W} type=Instant [/card] [card] -name=Hooded Horror -text=Hooded Horror can't be blocked as long as defending player controls the most creatures or is tied for the most. -mana={4}{B} -type=Creature -subtype=Horror -power=4 -toughness=4 -[/card] -[card] name=Horde Ambusher text=Whenever Horde Ambusher blocks, it deals 1 damage to you. -- Morph—Reveal a red card in your hand. (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) -- When Horde Ambusher is turned face up, target creature can't block this turn. mana={1}{R} @@ -5820,16 +5659,6 @@ power=+2 toughness=+3 [/card] [card] -name=Hundred-Handed One -abilities=vigilance -text=Vigilance -- {3}{W}{W}{W}: Monstrosity 3. (If this creature isn't monstrous, put three +1/+1 counters on it and it becomes monstrous.) -- As long as Hundred-Handed One is monstrous, it has reach and can block an additional ninety-nine creatures each combat. -mana={2}{W}{W} -type=Creature -subtype=Giant -power=3 -toughness=5 -[/card] -[card] name=Hundred-Talon Strike text=Target creature gets +1/+0 and gains first strike until end of turn. -- Splice onto Arcane—Tap an untapped white creature you control. (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) mana={W} @@ -5837,13 +5666,6 @@ type=Instant subtype=Arcane [/card] [card] -name=Hungry Hungry Heifer -text=During your upkeep, remove a counter from any card you control or sacrifice Hungry Hungry Heifer. -mana={2}{G} -type=Summon -subtype=Cow -[/card] -[card] name=Hurloon Wrangler text=Denimwalk (If defending player is wearing any clothing made of denim, this creature is unblockable.) mana={2}{R} @@ -5981,12 +5803,6 @@ mana={3}{R}{R} type=Sorcery [/card] [card] -name=Illuminated Folio -text={1}, {T}, Reveal two cards from your hand that share a color: Draw a card. -mana={5} -type=Artifact -[/card] -[card] name=Illusionary Informant text=Draft Illusionary Informant face up. -- During the draft, you may turn Illusionary Informant face down. If you do, look at the next card drafted by a player of your choice. -- Flying mana={1}{U} @@ -6028,12 +5844,6 @@ type=Enchantment subtype=Aura [/card] [card] -name=Imi Statue -text=Players can't untap more than one artifact during their untap steps. -mana={3} -type=Artifact -[/card] -[card] name=Immediate Action text=Hidden agenda (Start the game with this conspiracy face down in the command zone and secretly name a card. You may turn this conspiracy face up any time and reveal the chosen name.) -- Creatures you control with the chosen name have haste. type=Conspiracy @@ -6045,16 +5855,6 @@ type=Plane subtype=Valla [/card] [card] -name=Immobilizer Eldrazi -abilities=devoid -text=Devoid (This card has no color.) -- {2}{C}: Each creature with toughness greater than its power can't block this turn. ({C} represents colorless mana.) -mana={1}{R} -type=Creature -subtype=Eldrazi Drone -power=2 -toughness=1 -[/card] -[card] name=Immortal Coil text={T}, Exile two cards from your graveyard: Draw a card. -- If damage would be dealt to you, prevent that damage. Exile a card from your graveyard for each 1 damage prevented this way. -- When there are no cards in your graveyard, you lose the game. mana={2}{B}{B} @@ -6097,30 +5897,6 @@ mana={X}{U}{U} type=Sorcery [/card] [card] -name=Increasing Vengeance -text=Copy target instant or sorcery spell you control. If Increasing Vengeance was cast from a graveyard, copy that spell twice instead. You may choose new targets for the copies. -- Flashback {3}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) -mana={R}{R} -type=Instant -[/card] -[card] -name=Incremental Blight -text=Put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. -mana={3}{B}{B} -type=Sorcery -[/card] -[card] -name=Incremental Growth -text=Put a +1/+1 counter on target creature, two +1/+1 counters on another target creature, and three +1/+1 counters on a third target creature. -mana={3}{G}{G} -type=Sorcery -[/card] -[card] -name=Indomitable Creativity -text=Destroy X target artifacts and/or creatures. For each permanent destroyed this way, its controller reveals cards from the top of his or her library until an artifact or creature card is revealed and exiles that card. Those players put the exiled cards onto the battlefield, then shuffle their libraries. -mana={X}{R}{R}{R} -type=Sorcery -[/card] -[card] name=Ineffable Blessing (a) text=As Ineffable Blessing enters the battlefield, choose Flavorful or Bland. -- • Flavorful — Whenever a creature with flavor text enters the battlefield under your control, draw a card. -- • Bland — Whenever a creature without flavor text enters the battlefield under your control, draw a card. mana={1}{G} @@ -6157,12 +5933,6 @@ mana={1}{G} type=Enchantment [/card] [card] -name=Infernal Darkness -text=Cumulative upkeep—Pay {B} and 1 life. (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.) -- If a land is tapped for mana, it produces {B} instead of any other type. -mana={2}{B}{B} -type=Enchantment -[/card] -[card] name=Infernal Denizen text=At the beginning of your upkeep, sacrifice two Swamps. If you can't, tap Infernal Denizen, and an opponent may gain control of a creature you control of his or her choice for as long as Infernal Denizen remains on the battlefield. -- {T}: Gain control of target creature for as long as Infernal Denizen remains on the battlefield. mana={7}{B} @@ -6214,13 +5984,6 @@ power=9 toughness=9 [/card] [card] -name=Inferno Trap -text=If you've been dealt damage by two or more creatures this turn, you may pay {R} rather than pay Inferno Trap's mana cost. -- Inferno Trap deals 4 damage to target creature. -mana={3}{R} -type=Instant -subtype=Trap -[/card] -[card] name=Infinite Authority text=Enchant creature -- Whenever enchanted creature blocks or becomes blocked by a creature with toughness 3 or less, destroy the other creature at end of combat. At the beginning of the next end step, if that creature was destroyed this way, put a +1/+1 counter on the first creature. mana={W}{W}{W} @@ -6228,12 +5991,6 @@ type=Enchantment subtype=Aura [/card] [card] -name=Infinite Hourglass -text=At the beginning of your upkeep, put a time counter on Infinite Hourglass. -- All creatures get +1/+0 for each time counter on Infinite Hourglass. -- {3}: Remove a time counter from Infinite Hourglass. Any player may activate this ability but only during any upkeep step. -mana={4} -type=Artifact -[/card] -[card] name=Infinite Obliteration text=Name a creature card. Search target opponent's graveyard, hand, and library for any number of cards with that name and exile them. Then that player shuffles his or her library. mana={1}{B}{B} @@ -6262,13 +6019,6 @@ power=3 toughness=3 [/card] [card] -name=Inquisitor's Flail -text=If equipped creature would deal combat damage, it deals double that damage instead. -- If another creature would deal combat damage to equipped creature, it deals double that damage to equipped creature instead. -- Equip {2} -mana={2} -type=Artifact -subtype=Equipment -[/card] -[card] name=Insist text=The next creature spell you cast this turn can't be countered by spells or abilities. -- Draw a card. mana={G} @@ -6304,16 +6054,6 @@ mana={0} type=Instant [/card] [card] -name=Intet, the Dreamer -abilities=flying -text=Flying -- Whenever Intet, the Dreamer deals combat damage to a player, you may pay {2}{U}. If you do, exile the top card of your library face down. You may look at that card for as long as it remains exiled. You may play that card without paying its mana cost for as long as Intet remains on the battlefield. -mana={3}{U}{R}{G} -type=Legendary Creature -subtype=Dragon -power=6 -toughness=6 -[/card] -[card] name=Into the Earthen Maw text=When you set this scheme in motion, exile up to one target creature with flying, up to one target creature without flying, and all cards from up to one target opponent's graveyard. type=Scheme @@ -6331,12 +6071,6 @@ text=When you set this scheme in motion, choose one type=Scheme [/card] [card] -name=Intuition -text=Search your library for any three cards and reveal them. Target opponent chooses one. Put that card into your hand and the rest into your graveyard. Then shuffle your library. -mana={2}{U} -type=Instant -[/card] -[card] name=Invasion Plans text=All creatures block each turn if able. -- The attacking player chooses how each creature blocks each turn. mana={2}{R} @@ -6416,21 +6150,6 @@ type=Plane subtype=Ravnica [/card] [card] -name=Jabari's Influence -text=Cast Jabari's Influence only after combat. -- Gain control of target nonartifact, nonblack creature that attacked you this turn and put a -1/-0 counter on it. -mana={3}{W}{W} -type=Instant -[/card] -[card] -name=Jackknight -text=Whenever another artifact enters the battlefield under your control, put a +1/+1 counter on Jackknight. If that artifact is a Contraption, Jackknight gains lifelink until end of turn. -mana={1}{W} -type=Artifact Creature -subtype=Cyborg Knight -power=1 -toughness=1 -[/card] -[card] name=Jade Monolith text={1}: The next time a source of your choice would deal damage to target creature this turn, that source deals that damage to you instead. mana={4} @@ -6531,6 +6250,7 @@ toughness=2 [/card] [card] name=Jodah, Archmage Eternal +abilities=flying text=Flying -- You may pay {W}{U}{B}{R}{G} rather than pay the mana cost for spells that you cast. mana={1}{U}{R}{W} type=Legendary Creature @@ -6665,26 +6385,6 @@ mana={1}{B}{R} type=Enchantment [/card] [card] -name=Kemba's Legion -abilities=vigilance -text=Vigilance -- Kemba's Legion can block an additional creature for each Equipment attached to Kemba's Legion. -mana={5}{W}{W} -type=Creature -subtype=Cat Soldier -power=4 -toughness=6 -[/card] -[card] -name=Keranos, God of Storms -abilities=indestructible -text=Indestructible -- As long as your devotion to blue and red is less than seven, Keranos isn't a creature. -- Reveal the first card you draw on each of your turns. Whenever you reveal a land card this way, draw a card. Whenever you reveal a nonland card this way, Keranos deals 3 damage to target creature or player. -mana={3}{U}{R} -type=Legendary Enchantment Creature -subtype=God -power=6 -toughness=5 -[/card] -[card] name=Keruga, the Macrosage text=Companion — Your starting deck contains only cards with converted mana cost 3 or greater and land cards. (If this card is your chosen companion, you may cast it once from outside the game.) -- When Keruga, the Macrosage enters the battlefield, draw a card for each other permanent you control with converted mana cost 3 or greater. mana={3}{GU}{GU} @@ -6715,12 +6415,6 @@ mana={1}{B}{B} type=Instant [/card] [card] -name=Kill Switch -text={2}, {T}: Tap all other artifacts. They don't untap during their controllers' untap steps for as long as Kill Switch remains tapped. -mana={3} -type=Artifact -[/card] -[card] name=Kill-Suit Cultist text=Kill-Suit Cultist attacks each turn if able. -- {B}, Sacrifice Kill-Suit Cultist: The next time damage would be dealt to target creature this turn, destroy that creature instead. mana={R} diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index 6233b4abf..42857beeb 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -3927,7 +3927,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG string counterString = splitDuplicateCounters[1]; if(counterString.find("all") != string::npos) ((AADuplicateCounters*)a)->allcounters = true; - else if(counterString.find("single") != string::npos) + if(counterString.find("single") != string::npos) ((AADuplicateCounters*)a)->single = true; return a; } @@ -3935,7 +3935,8 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG vector splitRemoveSpecificCounters = parseBetween(s, "removesinglecountertype(", ")"); if (splitRemoveSpecificCounters.size()) { - int nb = atoi(splitRemoveSpecificCounters[1].c_str()); + WParsedInt* parser = NEW WParsedInt(splitRemoveSpecificCounters[1], card); + int nb = parser->intValue; MTGAbility * a = NEW AARemoveSingleCounter(observer, id, card, target, NULL, nb); a->oneShot = 1; a->canBeInterrupted = false;