From 1ab4e4ebfd2744555ec72081a2c8ac0b29a60ecd Mon Sep 17 00:00:00 2001 From: Vittorio Alfieri Date: Wed, 28 Jun 2023 17:07:09 +0200 Subject: [PATCH] Added new primitives from LTR set, added notrigger option for special tokens such as "The Monarch" and "The Ring" and "The Initiative", fixed LTR dat file, updated missing cards by sets list, added "untp" option for "rehook" and "retarget" ability to untap the equipped creature, added new restriction "oppoattacked" to check if your opponent has attacked during the current turn. --- .../missing_cards_by_sets/missingCardList.txt | 1 - projects/mtg/bin/Res/sets/LTR/_cards.dat | 2 +- .../mtg/bin/Res/sets/primitives/_macros.txt | 10 +- .../bin/Res/sets/primitives/borderline.txt | 737 +++++++++++++++++- projects/mtg/include/AllAbilities.h | 3 +- projects/mtg/src/AllAbilities.cpp | 9 +- projects/mtg/src/MTGAbility.cpp | 10 + 7 files changed, 760 insertions(+), 12 deletions(-) diff --git a/projects/mtg/bin/Res/missing_cards_by_sets/missingCardList.txt b/projects/mtg/bin/Res/missing_cards_by_sets/missingCardList.txt index 222b8d4f6..06dfc7e3c 100644 --- a/projects/mtg/bin/Res/missing_cards_by_sets/missingCardList.txt +++ b/projects/mtg/bin/Res/missing_cards_by_sets/missingCardList.txt @@ -352,4 +352,3 @@ Myojin of Cryptic Dreams Lithoform Engine Reality Spasm Suffer the Past -Grishnákh, Brash Instigator diff --git a/projects/mtg/bin/Res/sets/LTR/_cards.dat b/projects/mtg/bin/Res/sets/LTR/_cards.dat index 9e2a4ee0f..326a02c21 100644 --- a/projects/mtg/bin/Res/sets/LTR/_cards.dat +++ b/projects/mtg/bin/Res/sets/LTR/_cards.dat @@ -1200,7 +1200,7 @@ id=112176 rarity=U [/card] [card] -primitive=Grishnákh, Brash Instigator +primitive=Grishnakh, Brash Instigator id=112178 rarity=U [/card] diff --git a/projects/mtg/bin/Res/sets/primitives/_macros.txt b/projects/mtg/bin/Res/sets/primitives/_macros.txt index ddc8ca356..628e4d87c 100644 --- a/projects/mtg/bin/Res/sets/primitives/_macros.txt +++ b/projects/mtg/bin/Res/sets/primitives/_macros.txt @@ -130,15 +130,15 @@ #AUTO_DEFINE _CITY'S_BLESSING_ aslongas(City's Blessing|mybattlefield)>0 # Monarch -#AUTO_DEFINE _MONARCH_CONTROLLER_ if type(The Monarch|battlefield)~lessthan~1 then token(The Monarch) else all(The Monarch|battlefield) moveto(mybattlefield) and!( transforms((,newability[becomesmonarch controller])) forever )! -#AUTO_DEFINE _MONARCH_OPPONENT_ if type(The Monarch|battlefield)~lessthan~1 then token(The Monarch) opponent else all(The Monarch|battlefield) moveto(opponentbattlefield) and!( transforms((,newability[becomesmonarch controller])) forever )! +#AUTO_DEFINE _MONARCH_CONTROLLER_ if type(The Monarch|battlefield)~lessthan~1 then token(The Monarch^notrigger) else all(The Monarch|battlefield) moveto(mybattlefield) and!( transforms((,newability[becomesmonarch controller])) forever )! +#AUTO_DEFINE _MONARCH_OPPONENT_ if type(The Monarch|battlefield)~lessthan~1 then token(The Monarch^notrigger) opponent else all(The Monarch|battlefield) moveto(opponentbattlefield) and!( transforms((,newability[becomesmonarch controller])) forever )! # Initiative -#AUTO_DEFINE _INITIATIVE_CONTROLLER_ if type(The Initiative|battlefield)~lessthan~1 then token(The Initiative) else all(The Initiative|battlefield) moveto(mybattlefield) and!( transforms((,newability[takesinitiative controller])) forever )! -#AUTO_DEFINE _INITIATIVE_OPPONENT_ if type(The Initiative|battlefield)~lessthan~1 then token(The Initiative) opponent else all(The Initiative|battlefield) moveto(opponentbattlefield) and!( transforms((,newability[takesinitiative controller])) forever )! +#AUTO_DEFINE _INITIATIVE_CONTROLLER_ if type(The Initiative|battlefield)~lessthan~1 then token(The Initiative^notrigger) else all(The Initiative|battlefield) moveto(mybattlefield) and!( transforms((,newability[takesinitiative controller])) forever )! +#AUTO_DEFINE _INITIATIVE_OPPONENT_ if type(The Initiative|battlefield)~lessthan~1 then token(The Initiative^notrigger) opponent else all(The Initiative|battlefield) moveto(opponentbattlefield) and!( transforms((,newability[takesinitiative controller])) forever )! # The Ring Tempts -#AUTO_DEFINE _RINGTEMPTS_ if type(The Ring|mybattlefield)~morethan~0 then all(The Ring|mybattlefield) transforms((,newability[theringtempts:1 controller],newability[name(Chose a ring bearer) target(creature|mybattlefield) becomesringbearer])) oneshot else token(The Ring) and!( theringtempts:1 controller and!( name(Choose a ring bearer) target(creature|myBattlefield) becomesringbearer )! )! +#AUTO_DEFINE _RINGTEMPTS_ if type(The Ring|mybattlefield)~morethan~0 then all(The Ring|mybattlefield) transforms((,newability[theringtempts:1 controller],newability[name(Chose a ring bearer) target(creature|mybattlefield) becomesringbearer])) oneshot else token(The Ring^notrigger) and!( theringtempts:1 controller and!( name(Choose a ring bearer) target(creature|myBattlefield) becomesringbearer )! )! # Explore, not implemented #AUTO_DEFINE _EXPLORE_ reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) optiontwoend revealend limit:1 diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index a22717546..3c0bdba4b 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -1,7 +1,7 @@ grade=borderline #Bordeline Primitives Pack for Wagic the Homebrew. #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#I sorted this programmatically - Thanks to Vitty85 27-06-2023 +#I sorted this programmatically - Thanks to Vitty85 28-06-2023 [card] name=+2 Mace auto={3}:equip @@ -2308,6 +2308,16 @@ text={T}: Add one mana of any color to your mana pool. Spend this mana only to c type=Land [/card] [card] +name=Anduril, Flame of the West +auto=teach(creature[legendary]) transforms((,newability[3/1],newability[@combat(attacking) source(this):name(Create spirits) name(Create spirits) token(Spirit^Creature Spirit^1/1^white^battleready^flying)*2])) +auto=teach(creature[-legendary]) transforms((,newability[3/1],newability[@combat(attacking) source(this):name(Create spirits) name(Create spirits) token(Spirit^Creature Spirit^1/1^white^flying)*2 and!( tap(noevent) )!])) +auto={2}:equip +text=Equipped creature gets +3/+1. -- Whenever equipped creature attacks, create two tapped 1/1 white Spirit creature tokens with flying. If that creature is legendary, instead create two of those tokens that are tapped and attacking. -- Equip {2} +mana={3} +type=Legendary Artifact +subtype=Equipment +[/card] +[card] name=Angel Ang abilities=flying type=Creature @@ -4514,6 +4524,17 @@ power=3 toughness=3 [/card] [card] +name=Arwen Undomiel +auto=@scryed(*|mybattlefield,mystack):name(Put 1/1 counter) target(creature|battlefield) counter(1/1) +auto={4}{G}{U}:name(Scry 2) _SCRY2_ +text=Whenever you scry, put a +1/+1 counter on target creature. -- {4}{G}{U}: Scry 2. +mana={G}{U} +type=Legendary Creature +subtype=Elf Noble +power=2 +toughness=2 +[/card] +[card] name=Arwen's Gift anyzone=aslongas(creature[legendary]|mybattlefield) altercost(colorless,-1) >1 auto=scry:2 scrycore delayed dontshow draw:2 controller scrycoreend scryend @@ -6130,6 +6151,16 @@ mana={1}{W} type=Enchantment [/card] [card] +name=Bag End Porter +auto=_ATTACKING_name(Gains X/X) type:creature[legendary]:mybattlefield/type:creature[legendary]:mybattlefield ueot +text=Whenever Bag End Porter attacks, it gets +X/+X until end of turn, where X is the number of legendary creatures you control. +mana={3}{G} +type=Creature +subtype=Dwarf +power=4 +toughness=4 +[/card] +[card] name=Bag of Devouring auto=@sacrificed(other artifact[-token]|mybattlefield):name(Exile artifact) transforms((,newability[name(Exile artifact) all(*[zpos=type:*:mygraveyard]|mygraveyard) moveto(ownerexile) and!( counter(0/0.1.BagExiled) )!])) oneshot auto=@sacrificed(creature[-token;-artifact]|mybattlefield):name(Exile creature) transforms((,newability[name(Exile creature) all(*[zpos=type:*:mygraveyard]|mygraveyard) moveto(ownerexile) and!( counter(0/0.1.BagExiled) )!])) oneshot @@ -6807,6 +6838,16 @@ power=3 toughness=4 [/card] [card] +name=Barrow-Blade +auto=teach(creature) 1/1 +auto=@combat(blocking,blocked) source(mytgt) from(creature):name(Creature loses all abilities) all(trigger[from]) name(Creature loses all abilities) transforms((,newability[loseabilities])) ueot +auto={1}:equip +text=Equipped creature gets +1/+1. -- Whenever equipped creature blocks or becomes blocked by a creature, that creature loses all abilities until end of turn. -- Equip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) +mana={1} +type=Artifact +subtype=Equipment +[/card] +[card] name=Barrowin of Clan Undurr auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot auto=@combat(attacking) source(this) restriction{compare(pdungeoncompleted)~morethan~0}:may name(Return creature) target(creature[manacost<=3]|mygraveyard) moveto(myBattlefield) @@ -8014,6 +8055,18 @@ mana={3}{R}{D(other *|myhand)} type=Instant [/card] [card] +name=Bilbo, Retired Burglar +auto=@combatdamaged(player) from(this):name(Create treasure) token(Treasure) +auto=name(The ring tempts you) ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +auto=@movedto(this|nonbattlezone) from(battlefield):name(The ring tempts you) ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +text=When Bilbo, Retired Burglar enters or leaves the battlefield, the Ring tempts you. -- Whenever Bilbo deals combat damage to a player, create a Treasure token. +mana={1}{U}{R} +type=Legendary Creature +subtype=Halfling Rogue +power=1 +toughness=3 +[/card] +[card] name=Bilious Skulldweller abilities=deathtouch,poisontoxic text=Deathtouch -- Toxic 1 (Players dealt combat damage by this creature also get a poison counter.) @@ -10396,6 +10449,15 @@ power=1 toughness=1 [/card] [card] +name=Bombadil's Song +target=creature|myBattlefield +auto=transforms((,newability[1/1],newability[opponentshroud])) ueot +auto=ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +text=Target creature you control gets +1/+1 and gains hexproof until end of turn. The Ring tempts you. (A creature with hexproof can't be the target of spells of abilities your opponents control.) +mana={1}{G} +type=Instant +[/card] +[card] name=Bombard target=creature auto=damage:4 @@ -11344,6 +11406,16 @@ text={T}: Add {G}. // Boulderloft Pathway type=Land [/card] [card] +name=Brandywine Farmer +auto=name(Create food) token(Food) +text=When Brandywine Farmer enters or leaves the battlefield, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") +mana={2}{G} +type=Creature +subtype=Halfling Peasant +power=1 +toughness=1 +[/card] +[card] name=Brash Taunter abilities=indestructible auto=_ENRAGE_damage:thatmuch target(opponent) @@ -12564,6 +12636,16 @@ mana={G} type=Sorcery [/card] [card] +name=Butterbur, Bree Innkeeper +auto=@each my endofturn restriction{type(food|mybattlefield)~equalto~0}:name(Create food) token(Food) +text=At the beginning of your end step, if you don't control a Food, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") +mana={2}{G}{W} +type=Legendary Creature +subtype=Human Peasant +power=3 +toughness=3 +[/card] +[card] name=Buy Your Silence target=*[-land] auto=moveto(exile) && create(Treasure) targetController @@ -14158,6 +14240,17 @@ power=3 toughness=3 [/card] [card] +name=Celeborn the Wise +auto=@combat(attacking) source(elf|mybattlefield) turnlimited:name(Scry 1) _SCRY1_ +auto=@scryed(*|mybattlefield,mystack):name(Gains x/x) scryedcards/scryedcards ueot +text=Whenever you attack with one or more Elves, scry 1. -- Whenever you scry, Celeborn the Wise gets +1/+1 until end of turn for each card you looked at while scrying this way. +mana={3}{G} +type=Legendary Creature +subtype=Elf Noble +power=3 +toughness=3 +[/card] +[card] name=Celebrate the Harvest auto=if type(creature[power=0]|mybattlefield)~morethan~0 then ability$!may name(Search basic land) name(Search basic land) target(land[basic]|mylibrary) moveto(mybattlefield) and!( tap(noevent) )! !$ controller auto=if type(creature[power=1]|mybattlefield)~morethan~0 then ability$!may name(Search basic land) name(Search basic land) target(land[basic]|mylibrary) moveto(mybattlefield) and!( tap(noevent) )! !$ controller @@ -14749,6 +14842,16 @@ mana={1}{R}{W} type=Instant [/card] [card] +name=Chance-Met Elves +auto=@scryed(*|mybattlefield,mystack) turnlimited:name(Put 1/1 counter) counter(1/1) +text=Whenever you scry, put a +1/+1 counter on Chance-Met Elves. This ability triggers only once each turn. +mana={2}{G} +type=Creature +subtype=Elf Warrior +power=3 +toughness=2 +[/card] +[card] name=Chancellor of the Annex abilities=flying autohand=@each upkeep restriction{compare(currentturn)~lessthan~2}:may name(Reveal Chancellor of the Annex) transforms((,newability[@movedto(*|opponentstack) once:all(trigger[to]) transforms((,newability[pay[[{1}]] name(pay 1 mana) donothing?fizzle])) forever])) forever @@ -22179,6 +22282,21 @@ mana={1}{U} type=Instant [/card] [card] +name=Delighted Halfling +auto={T}:add{C} +auto=aslongas(*[-land&legendary]|myrestrictedcastingzone) {T}:name(Add white) name(Add white) add{W} and!( name(Legendary spell can't be countered) name(Legendary spell can't be countered) target(creature[legendary]|myrestrictedcastingzone) transforms((,newability[nofizzle])) ueot )! +auto=aslongas(*[-land&legendary]|myrestrictedcastingzone) {T}:name(Add blue) name(Add blue) add{U} and!( name(Legendary spell can't be countered) name(Legendary spell can't be countered) target(creature[legendary]|myrestrictedcastingzone) transforms((,newability[nofizzle])) ueot )! +auto=aslongas(*[-land&legendary]|myrestrictedcastingzone) {T}:name(Add green) name(Add green) add{G} and!( name(Legendary spell can't be countered) name(Legendary spell can't be countered) target(creature[legendary]|myrestrictedcastingzone) transforms((,newability[nofizzle])) ueot )! +auto=aslongas(*[-land&legendary]|myrestrictedcastingzone) {T}:name(Add black) name(Add black) add{B} and!( name(Legendary spell can't be countered) name(Legendary spell can't be countered) target(creature[legendary]|myrestrictedcastingzone) transforms((,newability[nofizzle])) ueot )! +auto=aslongas(*[-land&legendary]|myrestrictedcastingzone) {T}:name(Add red) name(Add red) add{R} and!( name(Legendary spell can't be countered) name(Legendary spell can't be countered) target(creature[legendary]|myrestrictedcastingzone) transforms((,newability[nofizzle])) ueot )! +text={T}: Add {C}. -- {T}: Add one mana of any color. Spend this mana only to cast a legendary spell, and that spell can't be countered. +mana={G} +type=Creature +subtype=Halfling Citizen +power=1 +toughness=2 +[/card] +[card] name=Delighted Killbot mana={2} type=Artifact Creature @@ -22462,6 +22580,17 @@ text=If you control two or more other lands, Den of the Bugbear enters the battl type=Land [/card] [card] +name=Denethor, Ruling Steward +auto=@each my endofturn restriction{myhasdeadcreature}:name(Create soldier) token(Human Soldier,Creature Human Soldier,1/1,white) +auto={2}{S(other creature|mybattlefield)}:name(Opponent loses life) lifeleech:-1 opponent +text=At the beginning of your end step, if a creature died under your control this turn, create a 1/1 white Human Soldier creature token. -- {2}, Sacrifice another creature: Each opponent loses 1 life and you gain 1 life. +mana={1}{W}{B} +type=Legendary Creature +subtype=Human Noble +power=2 +toughness=4 +[/card] +[card] name=Dennick, Pious Apparition backside=Dennick, Pious Apprentice abilities=flying,exiledeath @@ -26078,6 +26207,16 @@ type=Artifact subtype=Equipment [/card] [card] +name=Dunedain Rangers +auto=@movedTo(land|myBattlefield) restriction{type(*[ringbearer]|mybattlefield)~equalto~0}:name(The ring tempts you) name(The ring tempts you) ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +text=Landfall - Whenever a land enters the battlefield under your control, if you don't control a Ring-bearer, the Ring tempts you. +mana={3}{G} +type=Creature +subtype=Human Ranger +power=4 +toughness=4 +[/card] +[card] name=Dunes of the Dead auto={T}:Add{1} auto=_DIES_token(Zombie ,Creature Zombie,2/2,Black) @@ -27551,6 +27690,22 @@ type=Artifact subtype=Equipment [/card] [card] +name=Elven Chorus +auto=showfromtoplibrary,canplayfromlibrarytop +auto=lord(creature|myBattlefield) transforms((,newability[{T}:Add{B}],newability[{T}:Add{G}],newability[{T}:Add{U}],newability[{T}:Add{R}],newability[{T}:Add{W}])) +text=You may look at the top card of your library any time. -- You may cast creature spells from the top of your library. -- Creatures you control have "{T}: Add one mana of any color." +mana={3}{G} +type=Enchantment +[/card] +[card] +name=Elven Farsight +aicode=activate if type(creature[zpos=1]|mylibrary)~morethan~0 then draw:1 controller +auto=scry:3 scrycore delayed dontshow transforms((,newability[if type(creature[zpos=1]|mylibrary)~morethan~0 then name(Draw a card) name(Draw a card) draw:1 controller])) oneshot scrycoreend scryend +text=Scry 3, then you may reveal the top card of your library. If it's a creature card, draw a card. +mana={G} +type=Sorcery +[/card] +[card] name=Elvish Clancaller auto=lord(other elf|myBattlefield) +1/+1 auto={4}{G}{G}{T}:moveto(mybattlefield) target(Elvish Clancaller|mylibrary) @@ -28308,6 +28463,17 @@ power=4 toughness=4 [/card] [card] +name=Enraged Huorn +abilities=trample +auto=ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +text=Trample -- When Enraged Huorn enters the battlefield, the Ring tempts you. +mana={4}{G} +type=Creature +subtype=Treefolk +power=4 +toughness=5 +[/card] +[card] name=Enraged Killbot mana={2} type=Artifact Creature @@ -28326,6 +28492,42 @@ type=Artifact subtype=Equipment [/card] [card] +name=Ent's Fury +target=creature|mybattlefield +auto=if cantargetcard(*[power>=4]|*) then transforms((,newability[counter(1/1)],newability[1/1],newability[name(Fight another creature) target(creature|opponentbattlefield) dynamicability])) ueot +auto=if cantargetcard(*[power<=3]|*) then transforms((,newability[1/1],newability[name(Fight another creature) target(creature|opponentbattlefield) dynamicability])) ueot +text=Put a +1/+1 counter on target creature you control if its power is 4 or greater. Then that creature gets +1/+1 until end of turn and fights target creature you don't control. +mana={1}{G} +type=Sorcery +[/card] +[card] +name=Ent-Draught Basin +auto=aslongas(creature[power=0]|battlefield) {0}{T}:name(X=0) name(X=0) target(creature[power=0]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=1]|battlefield) {1}{T}:name(X=1) name(X=1) target(creature[power=1]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=2]|battlefield) {2}{T}:name(X=2) name(X=2) target(creature[power=2]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=3]|battlefield) {3}{T}:name(X=3) name(X=3) target(creature[power=3]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=4]|battlefield) {4}{T}:name(X=4) name(X=4) target(creature[power=4]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=5]|battlefield) {5}{T}:name(X=5) name(X=5) target(creature[power=5]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=6]|battlefield) {6}{T}:name(X=6) name(X=6) target(creature[power=6]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=7]|battlefield) {7}{T}:name(X=7) name(X=7) target(creature[power=7]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=8]|battlefield) {8}{T}:name(X=8) name(X=8) target(creature[power=8]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=9]|battlefield) {9}{T}:name(X=9) name(X=9) target(creature[power=9]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=10]|battlefield) {10}{T}:name(X=10) name(X=10) target(creature[power=10]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=11]|battlefield) {11}{T}:name(X=11) name(X=11) target(creature[power=11]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=12]|battlefield) {12}{T}:name(X=12) name(X=12) target(creature[power=12]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=13]|battlefield) {13}{T}:name(X=13) name(X=13) target(creature[power=13]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=14]|battlefield) {14}{T}:name(X=14) name(X=14) target(creature[power=14]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=15]|battlefield) {15}{T}:name(X=15) name(X=15) target(creature[power=15]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=16]|battlefield) {16}{T}:name(X=16) name(X=16) target(creature[power=16]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=17]|battlefield) {17}{T}:name(X=17) name(X=17) target(creature[power=17]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=18]|battlefield) {18}{T}:name(X=18) name(X=18) target(creature[power=18]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power=19]|battlefield) {19}{T}:name(X=19) name(X=19) target(creature[power=19]|battlefield) counter(1/1) asSorcery +auto=aslongas(creature[power>=20]|battlefield) {20}{T}:name(X=20) name(X=20) target(creature[power>=20]|battlefield) counter(1/1) asSorcery +text={X}, {T}: Put a +1/+1 counter on target creature with power X. Activate only as a sorcery. +mana={2} +type=Artifact +[/card] +[card] name=Enter the God-Eternals target=creature auto=damage:4 @@ -31117,6 +31319,19 @@ power=4 toughness=5 [/card] [card] +name=Fangorn, Tree Shepherd +auto=lord(treefolk|mybattlefield) vigilance +auto=mypoolsave(green) +auto=@combat(attacking) source(treefolk|mybattlefield):name(Add green mana) add{G}{G} +auto=@movedto(this|nonbattlezone) from(battlefield):name(Terminate effect) name(Terminate effect) transforms((,newability[mypoolsave(green) terminate])) oneshot +text=Treefolk you control have vigilance. -- Whenever one or more Treefolk you control attack, add twice that much {G}. -- You don't lose unspent green mana as steps and phases end. +mana={4}{G}{G}{G} +type=Legendary Creature +subtype=Treefolk +power=4 +toughness=10 +[/card] +[card] name=Far // Away abilities=hasnokicker other={2}{B} name(Away) @@ -31149,6 +31364,16 @@ power=3 toughness=3 [/card] [card] +name=Faramir, Prince of Ithilien +auto=@each opponent endofturn:if oppoattacked then name(Create soldier) name(Create soldier) token(Human Soldier,Creature Human Soldier,1/1,white)*3 else name(Draw a card) name(Draw a card) draw:1 controller +text=At the beginning of your end step, choose an opponent. At the beginning of that player's next end step, you draw a card if they didn't attack you that turn. Otherwise, create three 1/1 white Human Soldier creature tokens. +mana={2}{W}{U} +type=Legendary Creature +subtype=Human Noble +power=3 +toughness=3 +[/card] +[card] name=Farewell auto=ability$!name(Exile all graveyards) may name(Exile all graveyards) moveto(exile) all(*|graveyard)!$ controller auto=ability$!name(Exile all enchantments) may name(Exile all enchantments) moveto(exile) all(enchantment)!$ controller @@ -34419,6 +34644,15 @@ power=2 toughness=1 [/card] [card] +name=Friendly Rivalry +target=creature|opponentBattlefield +auto=becomes(tgt) ueot +auto=name(Choose a creature) name(Choose a creature) target(creature|mybattlefield) transforms((,newability[damage:power all(tgt|opponentbattlefield)],newability[may name(Choose another legendary creature) target(other creature[legendary]|mybattlefield) transforms((,newability[damage:power all(tgt|opponentbattlefield)])) ueot])) ueot +text=Target creature you control and up to one other target legendary creature you control each deal damage equal to their power to target creature you don't control. +mana={R}{G} +type=Instant +[/card] +[card] name=Frightful Delusion target=*|stack auto=fizzle @@ -34481,6 +34715,18 @@ power=3 toughness=2 [/card] [card] +name=Frodo Baggins +auto=name(The ring tempts you) ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +auto=@movedto(creature[legendary]|mybattlefield):name(The ring tempts you) ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +auto=@combat(attacking) source(this):if cantargetcard(*[ringbearer]|*) then name(Must be blocked) name(Must be blocked) ability$!name(Choose a blocker) notatarget(creature|myBattlefield) transforms((,newability[mustblock])) ueot!$ opponent +text=Whenever Frodo Baggins or another legendary creature enters the battlefield under your control, the Ring tempts you. -- As long as Frodo is your Ring-bearer, it must be blocked if able. +mana={G}{W} +type=Legendary Creature +subtype=Halfling Scout +power=1 +toughness=3 +[/card] +[card] name=Froghemoth abilities=trample,haste auto=@combatdamaged(player) from(this):name(Exile cards) transforms((,newability[name(Exile cards) target(*|opponentgraveyard) moveto(exile) and!( all(this) counter(1/1) && if cantargetcard(*[-creature]|*) then life:1 controller )!])) oneshot @@ -35074,6 +35320,38 @@ power=4 toughness=4 [/card] [card] +name=Galadhrim Bow +abilities=flash +auto=name(Attach to creature) rehook untp target(creature|mybattlefield) +auto=teach(creature) transforms((,newability[reach],newability[1/2])) +auto={2}:equip +text=Flash -- When Galadhrim Bow enters the battlefield, attach it to target creature you control. Untap that creature. -- Equipped creature gets +1/+2 and has reach. -- Equip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.) +mana={2}{G} +type=Artifact +subtype=Equipment +[/card] +[card] +name=Galadhrim Guide +auto=_SCRY2_ +text=When Galadhrim Guide enters the battlefield, scry 2. +mana={3}{G} +type=Creature +subtype=Elf Scout +power=3 +toughness=4 +[/card] +[card] +name=Galadriel of Lothlorien +auto=@bearerchosen(other creature|mybattlefield):name(Scry 3) _SCRY3_ +auto=@scryed(*|mybattlefield,mystack):may name(Reveal the top card) all(*[zpos=1]|mylibrary) moveto(myhand) and!( transforms((,newability[if cantargetcard(*[land]|*) then choice name(Put on battlefield) name(Put on battlefield) moveto(mybattlefield) and!( tap(noevent) )!],newability[if cantargetcard(*[-land]|*) then choice name(Put back) name(Put back) moveto(mylibrary)])) oneshot )! +text=Whenever the Ring tempts you, if you chose a creature other than Galadriel of Lothlorien as your Ring-bearer, scry 3. -- Whenever you scry, you may reveal the top card of your library. If a land card is revealed this way, put it onto the battlefield tapped. +mana={1}{G}{U} +type=Legendary Creature +subtype=Elf Noble +power=3 +toughness=3 +[/card] +[card] name=Galazeth Prismari abilities=flying auto=token(Treasure) @@ -35240,6 +35518,20 @@ power=3 toughness=4 [/card] [card] +name=Gandalf the Grey +auto=@movedTo(*[instant;sorcery]|mystack):name(Choose one) transforms((,newability[if compare(hascnttp)~equalto~0 then choice name(Tap or untap permanent) name(Tap or untap permanent) counter(0/0.1.Tp)],newability[if compare(hascntdmg)~equalto~0 then choice name(Damage opponent) name(Damage opponent) counter(0/0.1.Dmg)],newability[if compare(hascntcpy)~equalto~0 then choice name(Copy spell) name(Copy spell) counter(0/0.1.Cpy)],newability[if compare(hascntgan)~equalto~0 then choice name(Put on library top) name(Put on library top) counter(0/0.1.Gan)])) oneshot +auto=@counteradded(0/0,1,Tp) once:name(Tap or untap target permanent) target(*|battlefield) transforms((,newability[choice name(Tap) tap],newability[choice name(Untap) untap])) oneshot +auto=@counteradded(0/0,1,Dmg) once:name(Damage opponent) damage:3 opponent +auto=@counteradded(0/0,1,Cpy) once:name(Copy Spell) target(*[instant;sorcery]|mystack) transforms((,newability[activate castcard(copied noevent)])) oneshot +auto=@counteradded(0/0,1,Gan) once:name(Put on library top) moveto(mylibrary) +text=Whenever you cast an instant or sorcery spell, choose one that hasn't been chosen - -- You may tap or untap target permanent. -- Gandalf the Grey deals 3 damage to each opponent. -- Copy target instant or sorcery spell you control. You may choose new targets for the copy. -- Put Gandalf on top of its owner's library. +mana={3}{U}{R} +type=Legendary Creature +subtype=Avatar Wizard +power=3 +toughness=4 +[/card] +[card] name=Gandalf the White #MISSING: that ability triggers an additional time abilities=flash @@ -35836,6 +36128,18 @@ power=2 toughness=1 [/card] [card] +name=Generous Ent +abilities=reach +auto=token(Food) +autohand={1}{cycle}:name(Search forest) target(forest|myLibrary) moveTo(myHand) and!( shuffle )! +text=Reach -- When Generous Ent enters the battlefield, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") -- Forestcycling {1} ({1}, Discard this card: Search your library for a Forest card, reveal it, put it into your hand, then shuffle.) +mana={5}{G} +type=Creature +subtype=Treefolk +power=5 +toughness=7 +[/card] +[card] name=Generous Gift target=*|battlefield auto=destroy && _ELEPHANTTOKEN_ targetcontroller @@ -36569,6 +36873,17 @@ type=Enchantment subtype=Aura [/card] [card] +name=Gift of Strands +target=creature +abilities=flash +auto=_SCRY2_ +auto=teach(creature) 3/3 +text=Flash -- Enchant creature -- When Gift of Strands enters the battlefield, scry 2. -- Enchanted creature gets +3/+3. +mana={3}{G} +type=Enchantment +subtype=Aura +[/card] +[card] name=Gift of Strength target=creature auto=3/3 @@ -36727,6 +37042,15 @@ power=2 toughness=1 [/card] [card] +name=Gimli's Fury +target=creature +auto=transforms((,newability[3/2])) ueot +auto=if cantargetcard(*[legendary]|*) then transforms((,newability[trample])) ueot +text=Target creature gets +3/+2 until end of turn. If it's legendary, it also gains trample until end of turn. +mana={1}{R} +type=Instant +[/card] +[card] name=Gingerbread Cabin auto=aslongas(other land[forest]|myBattlefield) tap(noevent) <3 oneshot auto=aslongas(other land[forest]|myBattlefield) >2 token(Food) once @@ -38120,6 +38444,17 @@ mana={1} type=Artifact [/card] [card] +name=Goblin Fireleaper +auto={1}{R}:name(Gain 1/0) 1/0 ueot +auto=_DIES_name(Damage creature) damage:power target(creature|opponentbattlefield) +text={1}{R}: Goblin Fireleaper gets +1/+0 until end of turn. -- When Goblin Fireleaper dies, it deals damage equal to its power to target creature an opponent controls. +mana={1}{R} +type=Creature +subtype=Goblin Warrior +power=1 +toughness=1 +[/card] +[card] name=Goblin Flectomancer auto={S}:target(*[instant;sorcery]|stack) transforms((,newability[fizzle],newability[activate castcard(copied noevent)])) forever text=Sacrifice Goblin Flectomancer: You may change the targets of target instant or sorcery spell. @@ -40787,6 +41122,18 @@ power=2 toughness=3 [/card] [card] +name=Gwaihir the Windlord +abilities=flying,vigilance +anyzone=this(variable{pdrewcount}>1)while altercost(colorless,-2) +auto=lord(other bird|myBattlefield) vigilance +text=This spell costs {2} less to cast as long as you've drawn two or more cards this turn. -- Flying, vigilance -- Other Birds you control have vigilance. +mana={4}{W}{U} +type=Legendary Creature +subtype=Bird Noble +power=4 +toughness=4 +[/card] +[card] name=Gwenna, Eyes of Gaea auto=this(variable{type:creature:myrestrictedcastingzone}>0) {T}:name(Add 2 mana) thisforeach(variable{2}) ability$!name(Choose one) choice name(Add white) add{W} _ choice name(Add black) add{B} _ choice name(Add green) add{G} _ choice name(Add blue) add{U} _ choice name(Add red) add{R}!$ controller auto=this(variable{type:creature:mybattlefield}>1) {T}:name(Add 2 mana) thisforeach(variable{2}) ability$!name(Choose one) choice name(Add white) add{W} _ choice name(Add black) add{B} _ choice name(Add green) add{G} _ choice name(Add blue) add{U} _ choice name(Add red) add{R}!$ controller @@ -41502,6 +41849,17 @@ mana={2}{W} type=Enchantment [/card] [card] +name=Haradrim Spearmaster +abilities=reach +auto=@each my combatbegins:name(Another creature gains 1/0) target(other creature|myBattlefield) transforms((,newability[1/0])) ueot +text=Reach -- At the beginning of combat on your turn, another target creature you control gets +1/+0 until end of turn. +mana={2}{R} +type=Creature +subtype=Human Warrior +power=2 +toughness=3 +[/card] +[card] name=Harald Unites the Elves auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) @@ -44024,6 +44382,14 @@ mana={5} type=Artifact [/card] [card] +name=Horn of Gondor +auto=name(Create soldier) token(Human Soldier,Creature Human Soldier,1/1,white) +auto={3}{T}:name(Create soldiers) token(Human Soldier,Creature Human Soldier,1/1,white)*type:human:mybattlefield +text=When Horn of Gondor enters the battlefield, create a 1/1 white Human Soldier creature token. -- {3}, {T}: Create X 1/1 white Human Soldier creature tokens, where X is the number of Humans you control. +mana={3} +type=Legendary Artifact +[/card] +[card] name=Horn of Plenty auto=@movedTo(*|mystack):name(pay to draw) pay({1}) phaseaction[endofturn once] draw:1 auto=@movedTo(*|opponentstack):ability$!name(pay to draw) pay[[{1}]] name(pay 1 mana) phaseaction[endofturn once] draw:1!$ opponent @@ -45916,6 +46282,14 @@ mana={U}{R} type=Enchantment [/card] [card] +name=Improvised Club +target=player,creature,planeswalker +auto=damage:4 +text=As an additional cost to cast this spell, sacrifice an artifact or creature. -- Improvised Club deals 4 damage to any target. +mana={1}{R}{S(*[creature;artifact]|mybattlefield)} +type=Instant +[/card] +[card] name=Improvised Weaponry target=player,creature,planeswalker auto=damage:2 @@ -46657,6 +47031,18 @@ mana={7} type=Artifact [/card] [card] +name=Inherited Envelope +auto=name(The ring tempts you) ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +auto={T}:add{W} +auto={T}:add{U} +auto={T}:add{B} +auto={T}:add{R} +auto={T}:add{G} +text=When Inherited Envelope enters the battlefield, the Ring tempts you. -- {T}: Add one mana of any color. +mana={3} +type=Artifact +[/card] +[card] name=Inherited Fiend abilities=flying backside=Heirloom Mirror @@ -55704,6 +56090,16 @@ mana={W}{W} type=Instant [/card] [card] +name=Lothlorien Lookout +auto=_ATTACKING_ name(Scry 1) _SCRY1_ +text=Whenever Lothlorien Lookout attacks, scry 1. +mana={1}{G} +type=Creature +subtype=Elf Scout +power=1 +toughness=3 +[/card] +[card] name=Lotleth Giant auto=damage:1 target(opponent) type:creature:card:mygraveyard text=Undergrowth - When Lotleth Giant enters the battlefield, it deals 1 damage to target opponent for each creature card in your graveyard. @@ -57266,6 +57662,14 @@ type=Enchantment subtype=Aura [/card] [card] +name=Many Partings +auto=name(Create food) token(Food) +auto=name(Search basic land) target(land[basic]|mybattlefield) moveto(myhand) and!( shuffle )! +text=Search your library for a basic land card, reveal it, put it into your hand, then shuffle. Create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") +mana={G} +type=Sorcery +[/card] +[card] name=Maraleaf Pixie abilities=flying auto={T}:add{G} @@ -58074,6 +58478,17 @@ power=3 toughness=3 [/card] [card] +name=Mauhur, Uruk-hai Captain +abilities=menace +auto=@totalcounteradded(1/1) from(*[army;orc;goblin]|mybattlefield) plus(1):ability$!name(That many plus 1) donothing!$ controller +text=Menace -- If one or more +1/+1 counters would be put on an Army, Goblin, or Orc you control, that many plus one +1/+1 counters are put on it instead. +mana={B}{R} +type=Legendary Creature +subtype=Orc Soldier +power=2 +toughness=2 +[/card] +[card] name=Maul of the Skyclaves auto=name(Attach to creature) rehook target(creature|mybattlefield) auto=teach(creature) 2/2 @@ -58762,6 +59177,16 @@ power=3 toughness=3 [/card] [card] +name=Meriadoc Brandybuck +auto=@combat(attacking) source(halfling|mybattlefield):name(Create food) token(Food) +text=Whenever one or more Halflings you control attack a player, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") +mana={1}{G} +type=Legendary Creature +subtype=Halfling Citizen +power=2 +toughness=2 +[/card] +[card] name=Merieke Ri Berit abilities=doesnotuntap auto={T}:name(Gain control of creature) all(this) counter(0/0.1.MeriekeStolen) && target(creature) moveto(myBattlefield) and!( counter(0/0.1.MeriekeStolen) )! @@ -58775,6 +59200,18 @@ power=1 toughness=1 [/card] [card] +name=Merry, Esquire of Rohan +abilities=haste +auto=this(cantargetcard(*[geared]) first strike +auto=@combat(attacking) source(this):if type(other creature[legendary&attacking]|mybattlefield)~morethan~0 then name(Draw a card) name(Draw a card) draw:1 controller +text=Haste -- Merry, Esquire of Rohan has first strike as long as it's equipped. -- Whenever you attack with Merry and another legendary creature, draw a card. +mana={R}{W} +type=Legendary Creature +subtype=Halfling Knight +power=2 +toughness=2 +[/card] +[card] name=Mesa Cavalier abilities=flying auto=life:2 @@ -59642,6 +60079,17 @@ power=2 toughness=3 [/card] [card] +name=Mirkwood Spider +abilities=deathtouch +auto=_ATTACKING_target(legendary creature|myBattlefield)) deathtouch ueot +text=Deathtouch -- Whenever Mirkwood Spider attacks, target legendary creature you control gains deathtouch until end of turn. +mana={G} +type=Creature +subtype=Spider +power=1 +toughness=1 +[/card] +[card] name=Mirran Banesplitter abilities=flash auto=name(Attach to creature) rehook target(creature|mybattlefield) @@ -59744,6 +60192,18 @@ type=Artifact subtype=Equipment [/card] [card] +name=Mirror of Galadriel +auto=this(variable{type:creature[legendary]:mybattlefield}=0) {5}{T}:name(Scry 1) name(Scry 1) scry:1 scrycore delayed draw:1 controller scrycoreend scryend +auto=this(variable{type:creature[legendary]:mybattlefield}=1) {4}{T}:name(Scry 1) name(Scry 1) scry:1 scrycore delayed draw:1 controller scrycoreend scryend +auto=this(variable{type:creature[legendary]:mybattlefield}=2) {3}{T}:name(Scry 1) name(Scry 1) scry:1 scrycore delayed draw:1 controller scrycoreend scryend +auto=this(variable{type:creature[legendary]:mybattlefield}=3) {2}{T}:name(Scry 1) name(Scry 1) scry:1 scrycore delayed draw:1 controller scrycoreend scryend +auto=this(variable{type:creature[legendary]:mybattlefield}=4) {1}{T}:name(Scry 1) name(Scry 1) scry:1 scrycore delayed draw:1 controller scrycoreend scryend +auto=this(variable{type:creature[legendary]:mybattlefield}>=5) {T}:name(Scry 1) name(Scry 1) scry:1 scrycore delayed draw:1 controller scrycoreend scryend +text={5}, {T}: Scry 1, then draw a card. This ability costs {1} less to activate for each legendary creature you control. +mana={2} +type=Legendary Artifact +[/card] +[card] name=Mirror of Life Trapping auto=@movedTo(creature|battlefield):name(Exile creature) name(Exile creature) all(trigger[to]) transforms((,newability[if casted(this) then moveto(exile) and!( transforms((,newability[counter(0/0.1.MirrorExiled) notrg],newability[all(other creature[counter{0/0.1.MirrorExiled}]|exile) moveto(ownerbattlefield)])) oneshot )!])) oneshot text=Whenever a creature enters the battlefield, if it was cast, exile it, then return all other permanent cards exiled with Mirror of Life Trapping to the battlefield under their owners' control. @@ -59793,6 +60253,16 @@ mana={1}{U}{U} type=Enchantment [/card] [card] +name=Mirrormere Guardian +auto=_DIES_ name(The ring tempts you) ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +text=When Mirrormere Guardian dies, the Ring tempts you. +mana={2}{G} +type=Creature +subtype=Dwarf Soldier +power=4 +toughness=2 +[/card] +[card] name=Mirrorshell Crab auto=_WARD_(3) autohand={2}{U}{discard}:transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever target(*|stack) @@ -60351,6 +60821,17 @@ power=4 toughness=2 [/card] [card] +name=Mithril Coat +abilities=flash,indestructible +auto=name(Attach to creature) rehook target(creature[legendary]|mybattlefield) +auto=teach(creature) indestructible +auto={3}:equip +text=Flash -- Indestructible -- When Mithril Coat enters the battlefield, attach it to target legendary creature you control. -- Equipped creature has indestructible. -- Equip {3} +mana={3} +type=Legendary Artifact +subtype=Equipment +[/card] +[card] name=Mizzium Tank auto=@movedTo(*[-creature]|mystack):becomes(Artifact Creature) ueot auto=@movedTo(*[-creature]|mystack):1/1 ueot @@ -61087,6 +61568,17 @@ mana={1}{U} type=Instant [/card] [card] +name=Moria Marauder +abilities=double strike +auto=@combatdamaged(player) from(*[goblin;orc]|mybattlefield):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +text=Double strike -- Whenever a Goblin or Orc you control deals combat damage to a player, exile the top card of your library. You may play that card this turn. +mana={R}{R} +type=Creature +subtype=Goblin Warrior +power=1 +toughness=1 +[/card] +[card] name=Moritte of the Frost abilities=changeling auto=if type(creature|mybattlefield)~morethan~0 then choice name(Becomes a copy of creature) name(Becomes a copy of creature) target(creature|mybattlefield) copy and!( transforms((Legendary Snow,newability[counter(1/1.2)],newability[changeling])) forever )! @@ -61583,6 +62075,16 @@ mana={X}{U}{U} type=Sorcery [/card] [card] +name=Mushroom Watchdogs +auto={S(food|mybattlefield)}:name(Put counter and vigilance) transforms((,newability[counter(1/1)],newability[vigilance])) ueot asSorcery +text=Sacrifice a Food: Put a +1/+1 counter on Mushroom Watchdogs. It gains vigilance until end of turn. Activate only as a sorcery. +mana={1}{G} +type=Creature +subtype=Dog +power=2 +toughness=2 +[/card] +[card] name=Mutagen Connoisseur abilities=flying,vigilance auto=foreach(*[isflipped]|myBattlefield) 1/0 @@ -65451,6 +65953,17 @@ power=1 toughness=1 [/card] [card] +name=Olog-hai Crusher +abilities=trample +auto=this(variable{type:*[goblin;orc]:mybattlefield}=0) cantblock +text=Trample -- Olog-hai Crusher can't block unless you control a Goblin or Orc. +mana={3}{R} +type=Creature +subtype=Troll Soldier +power=4 +toughness=4 +[/card] +[card] name=Oloro, Ageless Ascetic auto=@each my upkeep:life:2 controller auto=@lifeof(player) from(*[-lifefaker]|*):pay({1}) draw:1 controller && life:-1 opponent @@ -68188,6 +68701,17 @@ power=2 toughness=3 [/card] [card] +name=Peregrin Took +auto={S(food|mybattlefield)}{S(food|mybattlefield)}{S(food|mybattlefield)}:name(Sacrifice foods and draw card) draw:1 controller +auto=@tokencreated(*|mybattlefield):name(Create Food) token(Food,notrigger) +text=If one or more tokens would be created under your control, those tokens plus an additional Food token are created instead. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") -- Sacrifice three Foods: Draw a card. +mana={2}{G} +type=Legendary Creature +subtype=Halfling Citizen +power=2 +toughness=3 +[/card] +[card] name=Peregrination auto=if type(land|myLibrary)~morethan~1 then choice name(Search two lands) name(Search two lands) target(land[basic]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[tap(noevent)],newability[name(Search another land) target(land[basic]|mylibrary) moveto(myhand) and!( transforms((,newability[name(Scry 1) _SCRY1_])) oneshot )!])) oneshot )! auto=if type(land|myLibrary)~morethan~0 then choice name(Search one land) name(Search one land) target(land[basic]|mylibrary) moveto(mybattlefield) and!( tap(noevent) && _SCRY1_ )! @@ -69105,6 +69629,15 @@ power=1 toughness=3 [/card] [card] +name=Pippin's Bravery +restriction=type(creature|battlefield)morethan~0 +auto=if type(food|mybattlefield)~morethan~0 choice name(Sacrifice a food) name(Sacrifice a food) target(food|myBattlefield) sacrifice and!( name(Choose creature) target(creature|battlefield) transforms((,newability[4/4])) ueot )! +auto=choice name(Don't sacrifice a food) target(creature|battlefield) transforms((,newability[2/2])) ueot +text=You may sacrifice a Food. If you do, target creature gets +4/+4 until end of turn. Otherwise, that creature gets +2/+2 until end of turn. +mana={G} +type=Instant +[/card] +[card] name=Pir's Whim aicode=activate moveTo(myBattlefield) and!(tap(noevent))! target(land|myLibrary) auto=name(Search land) reveal:plibrarycount optionone name(choose card) target(land|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend @@ -70832,6 +71365,16 @@ power=7 toughness=6 [/card] [card] +name=Prince Imrahil the Fair +auto=_SECOND_DRAW_ name(Create soldier) token(Human Soldier,Creature Human Soldier,1/1,white) +text=Whenever you draw your second card each turn, create a 1/1 white Human Soldier creature token. +mana={W}{U} +type=Legendary Creature +subtype=Human Noble +power=2 +toughness=2 +[/card] +[card] name=Prince of Thralls auto=@movedto(*[-instant;-sorcery]|graveyard) from(opponentbattlefield):name(Pay life or give opponent) all(trigger[to]) name(Pay life or give opponent) transforms((,newability[choice name(Give to opponent) moveto(opponentbattlefield)],newability[choice name(Pay 3 life) life:-3 controller])) oneshot text=Whenever a permanent an opponent controls is put into a graveyard, put that card onto the battlefield under your control unless that opponent pays 3 life. @@ -72133,6 +72676,13 @@ power=2 toughness=2 [/card] [card] +name=Quarrel's End +auto=name(Create soldier) token(Human Soldier,Creature Human Soldier,1/1,white) +text=As an additional cost to cast this spell, discard a card. -- Draw two cards and create a 1/1 white Human Soldier creature token. +mana={2}{R}{D(*|myhand)} +type=Sorcery +[/card] +[card] name=Quarry Beetle auto=may moveto(mybattlefield) target(land|mygraveyard) text=When Quarry Beetle enters the battlefield, you may return target land card from your graveyard to the battlefield. @@ -72335,6 +72885,17 @@ type=Artifact subtype=Equipment [/card] [card] +name=Quickbeam, Upstart Ent +auto=may name(Creatures gain 2/2 and trample) target(creature|battlefield) transforms((,newability[2/2],newability[trample])) ueot +auto=@movedTo(other treefolk|myBattlefield):may name(Creatures gain 2/2 and trample) target(creature|battlefield) transforms((,newability[2/2],newability[trample])) ueot +text=Whenever Quickbeam, Upstart Ent or another Treefolk enters the battlefield under your control, up to two target creatures each get +2/+2 and gain trample until end of turn. +mana={4}{G}{G} +type=Legendary Creature +subtype=Treefolk +power=5 +toughness=6 +[/card] +[card] name=Quicken auto=target(sorcery|myhand) transforms((,newability[flash])) ueot auto=draw:1 controller @@ -73088,6 +73649,14 @@ mana={2}{W} type=Instant [/card] [card] +name=Rally at the Hornburg +auto=name(Create 2 soldier) token(Human Soldier,Creature Human Soldier,1/1,white)*2 and!( transforms((,newability[haste])) ueot )! +auto=all(human|mybattlefield) transforms((,newability[haste])) ueot +text=Create two 1/1 white Human Soldier creature tokens. Humans you control gain haste until end of turn. +mana={1}{R} +type=Sorcery +[/card] +[card] name=Rally for the Throne auto=token(Human,Creature Human,1/1,white)*2 auto=if casted(this) then if spent({W}{W}{W}) then life:type:creature:mybattlefield controller @@ -73375,6 +73944,15 @@ type=Enchantment subtype=Class [/card] [card] +name=Ranger's Firebrand +target=player,creature,planeswalker +auto=damage:2 +auto=ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +text=Ranger's Firebrand deals 2 damage to any target. The Ring tempts you. +mana={R} +type=Sorcery +[/card] +[card] name=Ranger's Hawk abilities=flying auto={3}{T}{T(other creature[-tapped]|mybattlefield)}:if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot asSorcery @@ -74890,6 +75468,16 @@ power=3 toughness=3 [/card] [card] +name=Relentless Rohirrim +auto=ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +text=When Relentless Rohirrim enters the battlefield, the Ring tempts you. +mana={3}{R} +type=Creature +subtype=Human Knight +power=4 +toughness=3 +[/card] +[card] name=Relic Amulet auto=@movedTo(*[instant;sorcery;wizard]|myStack):counter(0/0,1,Charge) all(this) auto={2}{T}:thisforeach(counter{0/0.1.Charge}) counter(0/0,-1,Charge) all(this) && damage:1 target(creature) @@ -75797,6 +76385,14 @@ mana={4}{B}{G} type=Sorcery [/card] [card] +name=Revive the Shire +target=*[-instant&-sorcery]|mygraveyard +auto=moveTo(myhand) and!( token(Food) )! +text=Return target permanent card from your graveyard to your hand. Create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") +mana={1}{G} +type=Sorcery +[/card] +[card] name=Revivify auto=if type(*|mygraveyard)~morethan~0 then name(Roll a d20) name(Roll a d20) all(*[zpos=1]|mygraveyard) transforms((,newability[@dierolled(*|mygraveyard) from(controller) once:if compare(lastrollresultplustype:creature[fresh]:mygraveyardplusend)~lessthan~15 then all(creature[fresh]|mygraveyard) moveto(myhand) else all(creature[fresh]|mygraveyard) moveto(mybattlefield)],newability[name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end])) oneshot auto=if type(*|mygraveyard)~equalto~0 then name(Roll a d20) name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end @@ -76517,6 +77113,14 @@ mana={2}{B} type=Instant [/card] [card] +name=Rise of the Witch-king +auto=ability$!name(Sacrifice a creature) name(Sacrifice a creature) sacrifice notatarget(creature|mybattlefield)!$ opponent +auto=name(Sacrifice a creature) target(creature|mybattlefield) sacrifice and!( transforms((,newability[may name(Return another permanent) target(other *[-instant;-sorcery]|mygraveyard) moveTo(mybattlefield)])) oneshot )! +text=Each player sacrifices a creature. If you sacrificed a creature this way, you may return another permanent card from your graveyard to the battlefield. +mana={2}{B}{G} +type=Sorcery +[/card] +[card] name=Rise to Glory restriction=type(*[creature;aura]|mygraveyard)~morethan~0 auto=if type(creature|mygraveyard)~morethan~0 then choice name(Return creature) name(Return creature) moveTo(myBattlefield) target(creature|myGraveyard) @@ -76601,6 +77205,14 @@ power=2 toughness=2 [/card] [card] +name=Rising of the Day +auto=lord(creature|myBattlefield) haste +auto=lord(creature[legendary]|myBattlefield) 1/0 +text=Creatures you control have haste. -- Legendary creatures you control get +1/+0. +mana={2}{R} +type=Enchantment +[/card] +[card] name=Risk Factor auto=ability$!name(Choose one) choice name(Damage 4) damage:4 controller _ choice name(Draw cards) draw:3 opponent!$ opponent flashback={2}{R}{D(*|myhand)} @@ -77294,6 +77906,17 @@ power=4 toughness=4 [/card] [card] +name=Rohirrim Lancer +abilities=menace +auto=_DIES_ name(The ring tempts you) ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +text=Menace (This creature can't be blocked except by two or more creatures.) -- When Rohirrim Lancer dies, the Ring tempts you. +mana={R} +type=Creature +subtype=Human Knight +power=1 +toughness=1 +[/card] +[card] name=Roil Eruption kicker={5} auto=if paid(kicker) then name(Deals 5 damages) name(Deals 5 damages) damage:5 target(player,creature,planeswalker) @@ -78385,6 +79008,15 @@ power=1 toughness=1 [/card] [card] +name=Rush the Room +target=creature +auto=transforms((,newability[1/0],newability[first strike])) ueot +auto=if cantargetcard(*[goblin;orc]|*) then transforms((,newability[haste])) ueot +text=Target creature gets +1/+0 and gains first strike until end of turn. If it's a Goblin or Orc, it also gains haste until end of turn. +mana={R} +type=Instant +[/card] +[card] name=Rushblade Commander auto=lord(warrior|mybattlefield) haste text=Warriors your team controls have haste. @@ -83371,6 +84003,17 @@ power=1 toughness=2 [/card] [card] +name=Shire Scarecrow +abilities=defender +auto={1}:name(Add 1 mana) ability$!name(Choose one) choice name(Add White) add{W} _ choice name(Add Blue) add{U} _ choice name(Add Black) add{B} _ choice name(Add Red) add{R} _ choice name(Add Green) add{G}!$ controller limit:1 +text=Defender -- {1}: Add one mana of any color. Activate only once each turn. +mana={2} +type=Artifact Creature +subtype=Scarecrow +power=0 +toughness=3 +[/card] +[card] name=Shire Shirriff abilities=vigilance auto=may name(Sacrifice a token) target(*[token]|mybattlefield) sacrifice and!( name(Exile creature) (blink)forsrc target(creature|opponentBattlefield) )! @@ -83579,6 +84222,14 @@ power=2 toughness=5 [/card] [card] +name=Shortcut to Mushrooms +auto=name(The ring tempts you) ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +auto=@each my end restriction{revolt}:name(Put 1/1 counter) target(creature|myBattlefield) counter(1/1) +text=When Shortcut to Mushrooms enters the battlefield, the Ring tempts you. -- At the beginning of your end step, if a permanent you controlled left the battlefield this turn, put a +1/+1 counter on target creature you control. +mana={1}{G} +type=Enchantment +[/card] +[card] name=Show of Confidence auto=if thisturn(*[instant;sorcery]|mystack)~equalto~1 then thisforeach(variable{1}) ability$!name(Put 1/1 counter) name(Put 1/1 counter) target(creature) transforms((,newability[counter(1/1)],newability[vigilance])) ueot!$ controller auto=if thisturn(*[instant;sorcery]|mystack)~equalto~2 then thisforeach(variable{2}) ability$!name(Put 1/1 counter) name(Put 1/1 counter) target(creature) transforms((,newability[counter(1/1)],newability[vigilance])) ueot!$ controller @@ -83618,6 +84269,16 @@ type=Enchantment subtype=Saga [/card] [card] +name=Shower of Arrows +restriction=type(*[artifact;creature;enchantment]|battlefield)~morethan~0 +auto=if type(artifact|battlefield)~morethan~0 then choice name(Destroy artifact) name(Destroy artifact) target(artifact|battlefield) destroy and!( _SCRY1_ )! +auto=if type(enchantment|battlefield)~morethan~0 then choice name(Destroy enchantment) name(Destroy enchantment) target(enchantment|battlefield) destroy and!( _SCRY1_ )! +auto=if type(creature[flying]|battlefield)~morethan~0 then choice name(Destroy flying creature) name(Destroy flying creature) target(creature[flying]|battlefield) destroy and!( _SCRY1_ )! +text=Destroy target artifact, enchantment, or creature with flying. Scry 1. +mana={2}{G} +type=Instant +[/card] +[card] name=Shrapnel Slinger auto=may name(Sacrifice a creature) sacrifice notatarget(creature|mybattlefield) and!( destroy target(artifact|opponentBattlefield) )! text=When Shrapnel Slinger enters the battlefield, you may sacrifice a creature. When you do, destroy target artifact an opponent controls. @@ -86247,6 +86908,16 @@ mana={4} type=Artifact [/card] [card] +name=Smite the Deathless +target=creature +auto=exiledeath ueot +auto=-indestructible ueot +auto=damage:3 +text=Smite the Deathless deals 3 damage to target creature. That creature loses indestructible until end of turn. If that creature would die this turn, exile it instead. +mana={1}{R} +type=Instant +[/card] +[card] name=Smiting Helix target=player,creature,planeswalker auto=damage:3 @@ -88604,6 +89275,14 @@ mana={3}{U} type=Instant [/card] [card] +name=Spiteful Banditry +auto=name(Damage all creatures) damage:fullpaid all(creature|battlefield) +auto=@movedto(creature|graveyard) from(opponentbattlefield) turnlimited:name(Create treasure) token(Treasure) +text=When Spiteful Banditry enters the battlefield, it deals X damage to each creature. -- Whenever one or more creatures your opponents control die, you create a Treasure token. This ability triggers only once each turn. +mana={X}{R}{R} +type=Enchantment +[/card] +[card] name=Spiteful Prankster auto=this(variable{controllerturn}>0) first strike auto=@movedTo(graveyard) from(other creature|battlefield):damage:1 target(planeswalker,player) @@ -91957,6 +92636,14 @@ power=4 toughness=3 [/card] [card] +name=Swarming of Moria +auto=token(Treasure) +auto=_AMASSORC2_ +text=Create a Treasure token. (It's an artifact with "{T} Sacrifice this artifact: Add one mana of any color.") -- Amass Orcs 2. (Put two +1/+1 counters on an Army you control. It's also an Orc. If you don't control an Army, create a 0/0 black Orc Army creature token first.) +mana={2}{R} +type=Sorcery +[/card] +[card] name=Swashbuckler Extraordinaire auto=name(Create treasure) token(Treasure) auto=@each my blockers restriction{type(*[treasure]|myBattlefield)~equalto~1}:may name(Sacrifice 1 treasure) name(Sacrifice 1 treasure) target(*[treasure]|mybattlefield) sacrifice and!( transforms((,newability[name(Creature gains double strike) target(creature|battlefield) transforms((,newability[double strike])) ueot])) oneshot )! @@ -95725,6 +96412,17 @@ mana={1}{B}{R} type=Enchantment [/card] [card] +name=Theoden, King of Rohan +auto=name(Creature gains double strike) target(creature|battlefield) transforms((,newability[double strike])) ueot +auto=@movedTo(other human|myBattlefield):name(Creature gains double strike) target(creature|battlefield) transforms((,newability[double strike])) ueot +text=Whenever Theoden, King of Rohan or another Human enters the battlefield under your control, target creature gains double strike until end of turn. +mana={1}{R}{W} +type=Legendary Creature +subtype=Human Noble +power=2 +toughness=3 +[/card] +[card] name=Theoretical Duplication auto=emblem transforms((,newability[@movedto(creature|opponentbattlefield):all(trigger[to]) clone])) ueot text=Whenever a nontoken creature enters the battlefield under an opponent's control this turn, create a token that's a copy of that creature. @@ -99716,6 +100414,17 @@ power=0 toughness=0 [/card] [card] +name=Ugluk of the White Hand +auto=@movedTo(creature[-orc&-goblin]|graveyard) from(mybattlefield):name(Put 1/1 counter) counter(1/1) +auto=@movedTo(creature[orc;goblin]|graveyard) from(mybattlefield):name(Put 1/1 counters) counter(1/1,2) +text=Whenever another creature you control dies, put a +1/+1 counter on Ugluk of the White Hand. If that creature was a Goblin or Orc, put two +1/+1 counters on Ugluk instead. +mana={2}{B}{R} +type=Legendary Creature +subtype=Orc Soldier +power=3 +toughness=3 +[/card] +[card] name=Ukkima, Stalking Shadow abilities=hiddenface,unblockable,partner partner=Cazur, Ruthless Stalker @@ -104482,6 +105191,17 @@ power=4 toughness=3 [/card] [card] +name=Warbeast of Gorgoroth +auto=@movedto(other creature[power>=4]|graveyard) from(battlefield):name(Amass orc) _AMASSORC2_ +auto=_DIES_ name(Amass orc) _AMASSORC2_ +text=Whenever Warbeast of Gorgoroth or another creature you control with power 4 or greater dies, amass Orcs 2. (Put two +1/+1 counters on an Army you control. It's also an Orc. If you don't control an Army, create a 0/0 black Orc Army creature token first.) +mana={4}{R} +type=Creature +subtype=Beast +power=5 +toughness=4 +[/card] +[card] name=Warbriar Blessing target=creature|myBattlefield auto=name(fight) transforms((,newability[dynamicability target(creature|opponentbattlefield)])) @@ -106892,6 +107612,21 @@ power=2 toughness=2 [/card] [card] +name=Wose Pathfinder +auto={T}:add{W} +auto={T}:add{U} +auto={T}:add{B} +auto={T}:add{R} +auto={T}:add{G} +auto={6}{G}{T}:name(Creature gains 3/3 and trample) target(other creature) transforms((,newability[3/3],newability[trample])) ueot +text={T}: Add one mana of any color. -- {6}{G}, {T}: Another target creature gets +3/+3 and gains trample until end of turn. +mana={1}{G} +type=Creature +subtype=Human Shaman +power=1 +toughness=1 +[/card] +[card] name=Wrathful Jailbreaker abilities=nightbound,mustattack backside=Weary Prisoner diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 69ef14802..0e457497c 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -4960,7 +4960,8 @@ public: bool newhook; int mutation; bool fromplay; - AANewTarget(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target, ManaCost * _cost = NULL, bool retarget = false, bool reequip = false, bool newhook = false, int mutation = 0, bool fromplay = false); + bool untap; + AANewTarget(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target, ManaCost * _cost = NULL, bool retarget = false, bool reequip = false, bool newhook = false, int mutation = 0, bool fromplay = false, bool untap = false); int resolve(); const string getMenuText(); AANewTarget * clone() const; diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index 77d51b2b5..8d66a8621 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -4612,8 +4612,8 @@ AAFrozen * AAFrozen::clone() const } // chose a new target for an aura or enchantment and equip it note: VERY basic right now. -AANewTarget::AANewTarget(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target, ManaCost * _cost, bool retarget, bool reequip, bool newhook, int mutation, bool fromplay) : -ActivatedAbility(observer, id, card, _cost, 0),retarget(retarget),reequip(reequip),newhook(newhook),mutation(mutation),fromplay(fromplay) +AANewTarget::AANewTarget(GameObserver* observer, int id, MTGCardInstance * card, MTGCardInstance * _target, ManaCost * _cost, bool retarget, bool reequip, bool newhook, int mutation, bool fromplay, bool untap) : +ActivatedAbility(observer, id, card, _cost, 0), retarget(retarget), reequip(reequip), newhook(newhook), mutation(mutation), fromplay(fromplay), untap(untap) { target = _target; } @@ -4653,6 +4653,8 @@ int AANewTarget::resolve() { ((AEquip*)a)->unequip(); ((AEquip*)a)->equip(source); + if(untap) + source->untap(); } } } @@ -4662,7 +4664,6 @@ int AANewTarget::resolve() target = source; source = _target; } - } if (_target && _target->currentZone == _target->controller()->game->battlefield && reequip && !mutation) { @@ -4690,6 +4691,8 @@ int AANewTarget::resolve() { ((AEquip*)a)->unequip(); ((AEquip*)a)->equip(source); + if(untap) + source->untap(); } } } diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index d23227d46..fbf04342e 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -775,6 +775,12 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe return 0; } + check = restriction[i].find("oppoattacked"); + if(check != string::npos) + { + if(card->controller()->opponent()->raidcount < 1) + return 0; + } check = restriction[i].find("opponentdamagedbycombat"); if(check != string::npos) @@ -5491,6 +5497,8 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG { MTGAbility * a = NEW AANewTarget(observer, id, card, target, NULL, (s.find("retarget") != string::npos), false, false, 0, (s.find("fromplay") != string::npos)); a->oneShot = 1; + if(s.find("untp") != string::npos) + ((AANewTarget*)a)->untap = true; return a; } @@ -5499,6 +5507,8 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG { MTGAbility * a = NEW AANewTarget(observer, id, card,target, NULL, false, true, (s.find("newhook") != string::npos)); a->oneShot = 1; + if(s.find("untp") != string::npos) + ((AANewTarget*)a)->untap = true; return a; }