From 797514521ef3f18d52dbb3e3651f8818b4c058fc Mon Sep 17 00:00:00 2001 From: Vittorio Alfieri Date: Wed, 21 Jun 2023 18:31:50 +0200 Subject: [PATCH] Added / fixed primitives from NEO set, updated missing cards by sets list, improved "removesinglecountertype" ability (added "all" option to remove a specific amount of each kind of counter on a target). --- .../mtg/bin/Res/missing_cards_by_sets/NEO.txt | 30 + .../missing_cards_by_sets/missingCardList.txt | 115 ---- .../bin/Res/sets/primitives/borderline.txt | 635 +++++++++++++++++- .../bin/Res/sets/primitives/planeswalkers.txt | 36 +- .../bin/Res/sets/primitives/unsupported.txt | 12 +- projects/mtg/include/AllAbilities.h | 1 + projects/mtg/src/AllAbilities.cpp | 31 +- projects/mtg/src/MTGAbility.cpp | 14 +- 8 files changed, 725 insertions(+), 149 deletions(-) diff --git a/projects/mtg/bin/Res/missing_cards_by_sets/NEO.txt b/projects/mtg/bin/Res/missing_cards_by_sets/NEO.txt index c95677639..ab7e746e6 100644 --- a/projects/mtg/bin/Res/missing_cards_by_sets/NEO.txt +++ b/projects/mtg/bin/Res/missing_cards_by_sets/NEO.txt @@ -8,6 +8,16 @@ power=3 toughness=4 [/card] [card] +name=Weaver of Harmony +auto=lord(other creature[enchantment]|myBattlefield) 1/1 +text=Other enchantment creatures you control get +1/+1. -- {G}, {T}: Copy target activated or triggered ability you control from an enchantment source. You may choose new targets for the copy. (Mana abilities can't be targeted.) +mana={1}{G} +type=Enchantment Creature +subtype=Snake Druid +power=2 +toughness=2 +[/card] +[card] name=Isshin, Two Heavens as One text=If a creature attacking causes a triggered ability of a permanent you control to trigger, that ability triggers an additional time. mana={R}{W}{B} @@ -17,6 +27,26 @@ power=3 toughness=4 [/card] [card] +name=Weaver of Harmony +auto=lord(other creature[enchantment]|myBattlefield) 1/1 +text=Other enchantment creatures you control get +1/+1. -- {G}, {T}: Copy target activated or triggered ability you control from an enchantment source. You may choose new targets for the copy. (Mana abilities can't be targeted.) +mana={1}{G} +type=Enchantment Creature +subtype=Snake Druid +power=2 +toughness=2 +[/card] +[card] +name=Weaver of Harmony +auto=lord(other creature[enchantment]|myBattlefield) 1/1 +text=Other enchantment creatures you control get +1/+1. -- {G}, {T}: Copy target activated or triggered ability you control from an enchantment source. You may choose new targets for the copy. (Mana abilities can't be targeted.) +mana={1}{G} +type=Enchantment Creature +subtype=Snake Druid +power=2 +toughness=2 +[/card] +[card] name=Isshin, Two Heavens as One text=If a creature attacking causes a triggered ability of a permanent you control to trigger, that ability triggers an additional time. mana={R}{W}{B} 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 e12f78f86..5d0f43c89 100644 --- a/projects/mtg/bin/Res/missing_cards_by_sets/missingCardList.txt +++ b/projects/mtg/bin/Res/missing_cards_by_sets/missingCardList.txt @@ -1,7 +1,6 @@ Primal Command Rowan Kenrith Pyre-Sledge Arsonist -Sokenzan Smelter Star Pupil Sun Droplet Hall of the Bandit Lord @@ -349,120 +348,6 @@ Whack Security Rhox Ormos, Archive Keeper Myojin of Cryptic Dreams -Unforgiving One -Silver-Fur Master -Satsuki, the Living Lore -Spirit-Sister's Call -Light-Paws, Emperor's Voice -Invoke Justice -Eater of Virtue -The Restoration of Eiganjo -Atsushi, the Blazing Sky -Dramatist's Puppet -Ambitious Assault -Containment Construct -March of Otherworldly Light -Akki Ember-Keeper -Bronze Cudgels -Automated Artificer -Inventive Iteration -Tamiyo, Compleated Sage -Okiba Salvage -The Kami War -Kaito Shizuki -Satoru Umezawa -The Fall of Lord Konda -Tribute to Horobi -Risona, Asari Commander -Tatsunari, Toad Rider -Soul Transfer -Prodigy's Prototype -Naomi, Pillar of Order -Reckoner Shakedown -Kotose, the Silent Spider -Ao, the Dawn Sky -The Long Reach of Night -Lethal Exploit -Nashi, Moon Sage's Scion -Invigorating Hot Spring -March of Wretched Sorrow -Hidetsugu Consumes All -Greasefang, Okiba Boss -Storyweave -Spinning Wheel Kick -Kami of Terrible Secrets -Weaver of Harmony -Teachings of the Kirin -Go-Shintai of Lost Wisdom -Invoke the Ancients -Thundering Raiju -The Dragon-Kami Reborn -Kami of Transience -Kodama of the West Tree -Jugan Defends the Temple -Mindlink Mech -Kappa Tech-Wrecker -Secluded Courtyard -March of Swirling Mist -Kura, the Boundless Sky -Kairi, the Swirling Sky -Coiling Stalker -March of Burgeoning Life -Azusa's Many Journeys -Upriser Renegade -Mech Hangar -Explosive Singularity -Anchor to Reality -Peerless Samurai -Moon-Circuit Hacker -Invoke Calamity -Futurist Operative -Covert Technician -Goro-Goro, Disciple of Ryusei -Biting-Palm Ninja -Scrap Welder -March of Reckless Joy -Discover the Impossible -Seismic Wave -Behold the Unspeakable -Roadside Reliquary -Awakened Awareness -Heiko Yamazaki, the General -Invoke Despair -Touch the Spirit Realm -Kumano Faces Kakkazan -Walking Skyscraper -Towashi Guide-Bot -Kami's Flare -Kami of Industry -Dragonspark Reactor -Crackling Emergence -Experimental Synthesizer -Iron Apprentice -Go-Shintai of Ancient Wars -Reckoner Bankbuster -Flame Discharge -Mirror Box -Mechtitan Core -Hidetsugu, Devouring Chaos -Season of Renewal -Roaring Earth -Orochi Merge-Keeper -Historian's Wisdom -Tezzeret, Betrayer of Flesh -Heir of the Ancient Fang -Go-Shintai of Hidden Cruelty -Enormous Energy Blade -Debt to the Kami -Assassin's Ink -Go-Shintai of Boundless Vigor -Reality Heist -Harmonious Emergence -Mobilizer Mech -Boseiju Reaches Skyward -Blossom Prancer -Careful Cultivation -Banishing Slash Lithoform Engine Reality Spasm Suffer the Past diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index 334a63510..571a1e686 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 20-06-2023 +#I sorted this programmatically - Thanks to Vitty85 21-06-2023 [card] name=+2 Mace auto={3}:equip @@ -2119,6 +2119,33 @@ type=Artifact subtype=Equipment [/card] [card] +name=Anchor to Reality +auto=if compare(storedmanacost)~equalto~0 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( shuffle )! +auto=if compare(storedmanacost)~equalto~1 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=0]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~2 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=1]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~3 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=2]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~4 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=3]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~5 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=4]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~6 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=5]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~7 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=6]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~8 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=7]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~9 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=8]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~10 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=9]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~11 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=10]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~12 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=11]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~13 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=12]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~14 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=13]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~15 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=14]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~16 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=15]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~17 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=16]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~18 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=17]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~equalto~19 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=18]|*) then _SCRY2_])) oneshot )! +auto=if compare(storedmanacost)~morethan~19 then name(Search equipment or vehicle) target(*[equipment;vehicle]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[if cantargetcard(*[manacost<=19]|*) then _SCRY2_])) oneshot )! +text=As an additional cost to cast this spell, sacrifice an artifact or creature. -- Search your library for an Equipment or Vehicle card, put that card onto the battlefield, then shuffle. If it has mana value less than the sacrificed permanent's mana value, scry 2. +mana={2}{U}{U}{S(*[creature;artifact]|mybattlefield)} +type=Sorcery +[/card] +[card] name=Ancient Animus target=creature|myBattlefield auto=if cantargetcard(legendary) then counter(1/1) @@ -2950,6 +2977,18 @@ power=2 toughness=2 [/card] [card] +name=Ao, the Dawn Sky +abilities=flying,vigilance +aicode=activate transforms((,newability[if type(*[-land&zpos<=7&manacost<=4]|mylibrary)~morethan~0 then target(*[-land&zpos<=7&manacost<=4]|mylibrary) moveto(mybattlefield) and!( all(*[zpos<=7]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )!],newability[if type(*[-land&zpos<=7&manacost<=4]|mylibrary)~equalto~0 then all(*[zpos<=7]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) ueot +auto=_DIES_name(Choose one) transforms((,newability[choice name(Put 1/1 counters) all(*[creature;vehicle]|myBattlefield) counter(1/1.2)],newability[name(Look top 7 cards) reveal:7 optionone name(Get nonland permanents) target(*[-land&manacost<=4]|reveal) moveto(mylibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(Put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(mybattlefield) afterrevealedend revealend])) oneshot +text=Flying, vigilance -- When Ao, the Dawn Sky dies, choose one -- Look at the top seven cards of your library. Put any number of nonland permanent cards with total mana value 4 or less from among them onto the battlefield. Put the rest on the bottom of your library in a random order. -- Put two +1/+1 counters on each permanent you control that's a creature or Vehicle. +mana={3}{W}{W} +type=Legendary Creature +subtype=Dragon Spirit +power=5 +toughness=4 +[/card] +[card] name=Apex Altisaur auto=may name(Fights opponent's creature) target(creature|opponentbattlefield) dynamicability auto=_ENRAGE_may name(Fights opponent's creature) target(creature|opponentbattlefield) dynamicability @@ -3653,6 +3692,18 @@ power=7 toughness=7 [/card] [card] +name=Architect of Restoration +abilities=vigilance +auto=_ATTACKING_name(Create spirit) token(Spirit,Creature Spirit,1/1) +auto=@combat(blocking) source(this):name(Create spirit) token(Spirit,Creature Spirit,1/1) +text=Vigilance -- Whenever Architect of Restoration attacks or blocks, create a 1/1 colorless Spirit creature token. +color=white +type=Enchantment Creature +subtype=Fox Monk +power=3 +toughness=4 +[/card] +[card] name=Archive Haunt backside=Overwhelmed Archivist abilities=flying,exiledeath @@ -4744,6 +4795,16 @@ toughness=1 color=black [/card] [card] +name=Assassin's Ink +target=creature,planeswalker +anyzone=this(variable{type:artifact:mybattlefield}>0)while altercost(colorless,-1) +anyzone=this(variable{type:enchantment:mybattlefield}>0)while altercost(colorless,-1) +auto=destroy +text=This spell costs {1} less to cast if you control an artifact and {1} less to cast if you control an enchantment. -- Destroy target creature or planeswalker. +mana={2}{B}{B} +type=Instant +[/card] +[card] name=Assassin's Trophy target=* auto=destroy @@ -5305,6 +5366,17 @@ power=3 toughness=3 [/card] [card] +name=Automated Artificer +auto=this(variable{type:artifact:myrestrictedcastingzone}>0) {T}:name(Add mana) name(Add mana) add{C} +auto=this(variable{type:artifact:mybattlefield}>0) {T}:name(Add mana) name(Add mana) add{C} +text={T}: Add {C}. Spend this mana only to activate an ability or cast an artifact spell. +mana={2} +type=Artifact Creature +subtype=Artificer +power=1 +toughness=3 +[/card] +[card] name=Automatic Librarian auto=_SCRY2_ text=When Automatic Librarian enters the battlefield, scry 2. (Look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) @@ -5657,6 +5729,16 @@ power=* toughness=* [/card] [card] +name=Awakened Awareness +target=artifact,creature +auto=teach(*[creature;artifact]) counter(1/1,fullpaid) +auto=teach(creature) becomes(,1/1) +text=Enchant artifact or creature -- When Awakened Awareness enters the battlefield, put X +1/+1 counters on enchanted permanent. -- As long as enchanted permanent is a creature, it has base power and toughness 1/1. +mana={X}{U}{U} +type=Enchantment +subtype=Aura +[/card] +[card] name=Awakened Skyclave abilities=haste,vigilance auto={T}:Add{W} @@ -5933,7 +6015,7 @@ auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=transforms((,newability[maxPlay(land)+1])) ueot auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}<=2) life:3 controller -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! text=(As this Saga enters and after your draw step, add a lore counter.) -- I - You may play an additional land this turn. -- II - You gain 3 life. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={1}{G} type=Enchantment @@ -6422,6 +6504,16 @@ mana={4}{W}{U} type=Instant [/card] [card] +name=Banishing Slash +auto=if type(artifact|battlefield)~morethan~0 then choice name(Destroy artifact) name(Destroy artifact) target(artifact|battlefield) destroy and!( if type(artifact|mybattlefield)~morethan~0 then if type(enchantment|mybattlefield)~morethan~0 then name(Create samurai) name(Create samurai) name(Create samurai) token(Samurai,Creature Samurai,2/2,white,vigilance) )! +auto=if type(enchantment|battlefield)~morethan~0 then choice name(Destroy enchantment) name(Destroy enchantment) target(enchantment|battlefield) destroy and!( if type(artifact|mybattlefield)~morethan~0 then if type(enchantment|mybattlefield)~morethan~0 then name(Create samurai) name(Create samurai) name(Create samurai) token(Samurai,Creature Samurai,2/2,white,vigilance) )! +auto=if type(creature[tapped]|battlefield)~morethan~0 then choice name(Destroy tapped creature) name(Destroy tapped creature) target(creature[tapped]|battlefield) destroy and!( if type(artifact|mybattlefield)~morethan~0 then if type(enchantment|mybattlefield)~morethan~0 then name(Create samurai) name(Create samurai) name(Create samurai) token(Samurai,Creature Samurai,2/2,white,vigilance) )! +auto=choice name(Don't destroy anything) if type(artifact|mybattlefield)~morethan~0 then if type(enchantment|mybattlefield)~morethan~0 then name(Create samurai) name(Create samurai) name(Create samurai) token(Samurai,Creature Samurai,2/2,white,vigilance) +text=Destroy up to one target artifact, enchantment, or tapped creature. Then if you control an artifact and an enchantment, create a 2/2 white Samurai creature token with vigilance. +mana={W}{W} +type=Sorcery +[/card] +[card] name=Banishment abilities=flash auto=name(Exile nonland permanent) target(other *[-land]|opponentbattlefield) transforms((,newability[moveto(exile) and!( counter(0/0.1.BanishmentExiled) )!],newability[all(other *[share!name!]|mybattlefield) moveto(exile) and!( counter(0/0.1.BanishmentExiled) )!])) oneshot @@ -7388,7 +7480,7 @@ auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=target(creature|myBattlefield) transforms((,newability[1/1],flying)) ueot auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}<=2) target(creature|myBattlefield) transforms((,newability[1/1],flying)) ueot -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Creature) )! asSorcery +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! asSorcery text=(As this Saga enters and after your draw step, add a lore counter.) -- I, II - Target creature you control gets +1/+1 and gains flying until end of turn. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={3}{W} type=Enchantment @@ -7423,6 +7515,22 @@ mana={3}{U} type=Instant [/card] [card] +name=Behold the Unspeakable +backside=Vision of the Unspeakable +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0,1,Lore) +auto=@each my firstmain:counter(0/0,1,Lore) +auto=name(Opponent creatures gain -2/0) transforms((,newability[lord(creature|opponentbattlefield) -2/0])) uynt +auto=@counteradded(0/0,1,Lore) from(this) restriction{type(*|myhand)~lessthan~2}:this(counter{0/0.2.Lore}=) name(Draw 4 cards) name(Draw 4 cards) draw:4 controller +auto=@counteradded(0/0,1,Lore) from(this) restriction{type(*|myhand)~morethan~1}:this(counter{0/0.2.Lore}=) name(Scry and draw) name(Scry and draw) scry:2 scrycore delayed draw:2 controller scrycoreend scryend +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Creatures you don't control get -2/-0 until your next turn. -- II - If you have one or fewer cards in hand, draw four cards. Otherwise, scry 2, then draw two cards. -- III - Exile this Saga, then return it to the battlefield transformed under your control. +mana={3}{U}{U} +type=Enchantment +subtype=Saga +[/card] +[card] name=Belbe, Corrupted Observer text=At the beginning of each player's postcombat main phase, that player adds {C}{C} for each of your opponents who lost life this turn. (Damage causes loss of life.) auto=@each my secondmain restriction{_SPECTACLE_}:add{C}{C} @@ -10763,7 +10871,7 @@ auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=may name(Search 2 lands) target(forest[basic]|mylibrary) moveto(myhand) and!( shuffle )! auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}<=2) may name(Return land) target(land|mygraveyard) moveto(mylibrary) -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Search your library for up to two basic Forest cards, reveal them, put them into your hand, then shuffle. -- II - Put up to one target land card from your graveyard on top of your library. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={3}{G} type=Enchantment @@ -11802,6 +11910,15 @@ power=6 toughness=6 [/card] [card] +name=Bronze Cudgels +auto=teach(creature) transforms((,newability[{2}:name(Creature gains X/0) counter(0/0.1.BronzeEffect) notrg && hascntbronzeeffect/0 ueot],newability[@each endofturn restriction{compare(hascntbronzeeffect)~morethan~0}:name(Effect ends) name(Effect ends) counter(0/0.-hascntbronzeeffect.BronzeEffect) notrg])) +auto={1}:equip +text={2}: Until end of turn, equipped creature gets +X/+0, where X is the number of times this ability has resolved this turn. -- Equip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) +mana={1} +type=Artifact +subtype=Equipment +[/card] +[card] name=Bronze Guardian abilities=double strike anyzone=type:artifact:myBattlefield/5 cdaactive @@ -17913,6 +18030,16 @@ type=Sorcery subtype=Lesson [/card] [card] +name=Containment Construct +auto=@discarded(*|myhand):may name(Exile discarded card) transforms((,newability[all(*[zpos=type:*:mygraveyard]|mygraveyard) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot)!])) ueot +text=Whenever you discard a card, you may exile that card from your graveyard. If you do, you may play that card this turn. +mana={2} +type=Artifact Creature +subtype=Construct +power=2 +toughness=1 +[/card] +[card] name=Containment Priest abilities=flash auto=@movedTo(creature[-token]|battlefield):all(trigger) transforms((,newability[ifnot casted(this) then moveto(exile)])) forever @@ -24663,6 +24790,17 @@ mana={WB}{WB}{WB}{WB} type=Enchantment [/card] [card] +name=Dramatist's Puppet +auto=name(Put counters) target(*[counter{any}]|battlefield) duplicatecounters(all,single) +auto=name(Remove counters) target(*[counter{any}]|battlefield) removesinglecountertype(all,1) +text=When Dramatist's Puppet enters the battlefield, for each kind of counter on target permanent, put another counter of that kind on it or remove one from it. +mana={4} +type=Artifact Creature +subtype=Construct +power=2 +toughness=4 +[/card] +[card] name=Drana and Linvala #MISSING: has all activated abilities abilities=flying,vigilance @@ -28045,7 +28183,7 @@ auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=_SCRY2_ auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}<=2) life:2 -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Creature) )! asSorcery +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! asSorcery text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Scry 2. -- II - You gain 2 life. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={1}{W} type=Enchantment @@ -29951,7 +30089,7 @@ auto=counter(0/0,1,Lore) auto=token(Goblin, Goblin Shaman Creature,2/2,red) and!( transforms((,newability[_ATTACKING_name(Create treasure) token(Treasure)])) forever )! auto=@each my firstmain:counter(0/0,1,Lore) auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}<=2) may name(Discard and draw) reject notatarget(*|myhand) and!( draw:1 controller )! -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Creature) )! asSorcery +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! asSorcery text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Create a 2/2 red Goblin Shaman creature token with "Whenever this creature attacks, create a Treasure token." -- II - You may discard up to two cards. If you do, draw that many cards. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={2}{R} type=Enchantment @@ -33724,6 +33862,17 @@ mana={U}{U}{U} type=Sorcery [/card] [card] +name=Fragment of Konda +abilities=defender +auto=_DIES_name(Draw a card) name(Draw a card) draw:1 controller +text=Defender -- When Fragment of Konda dies, draw a card. +color=white +type=Enchantment Creature +subtype=Human Noble +power=1 +toughness=3 +[/card] +[card] name=Frantic Inventory auto=draw:1 controller auto=foreach(Frantic Inventory|myGraveyard) draw:1 controller @@ -34376,6 +34525,17 @@ text=As Furycalm Snarl enters the battlefield, you may reveal a Mountain or Plai type=Land [/card] [card] +name=Futurist Operative +auto={2}{U}:untap +auto=this(cantargetcard(*[tapped]) transforms((Human Citizen,setpower=1,settoughness=1,newability[unblockable])) +text=As long as Futurist Operative is tapped, it's a Human Citizen with base power and toughness 1/1 and can't be blocked. -- {2}{U}: Untap Futurist Operative. +mana={3}{U} +type=Creature +subtype=Human Ninja +power=3 +toughness=4 +[/card] +[card] name=Futurist Sentinel auto={crew(other creature[power>=3]|myBattlefield)}:name(crew 3 [1 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=3]|mybattlefield)~morethan~0,compare(crewtotalpower)~morethan~2} auto={crew(other creature[power>=1]|myBattlefield)}{crew(other creature[power>=2]|myBattlefield)}:name(crew 3 [2 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=1]|mybattlefield)~morethan~0,type(other creature[-tapped;power>=2]|mybattlefield)~morethan~0,type(other creature[-tapped;-cantcrew]|mybattlefield)~morethan~1,compare(crewtotalpower)~morethan~2} @@ -37289,6 +37449,17 @@ power=1 toughness=1 [/card] [card] +name=Go-Shintai of Hidden Cruelty +abilities=deathtouch +auto=@each my endofturn:may name(Pay 1 and destroy) pay({1}) name(Pay 1 and destroy) target(creature[toughness<=type:shrine|myBattlefield]|battlefield) destroy +text=Deathtouch -- At the beginning of your end step, you may pay {1}. When you do, destroy target creature with toughness X or less, where X is the number of Shrines you control. +mana={3}{B} +type=Legendary Enchantment Creature +subtype=Shrine +power=2 +toughness=2 +[/card] +[card] name=Go-Shintai of Life's Origin auto={W}{U}{B}{R}{G}{T}:target(enchantment|mygraveyard) moveTo(mybattlefield) auto=create(shrine:enchantment creature shrine:1/1) @@ -37301,6 +37472,17 @@ power=3 toughness=4 [/card] [card] +name=Go-Shintai of Lost Wisdom +abilities=flying +auto=@each my endofturn:may name(Pay 1 and player mills cards) pay({1}) name(Pay 1 and player mills cards) transforms((,newability[choice name(Opponent mills cards) deplete:type:shrine:mybattlefield opponent],newability[choice name(You mill cards) deplete:type:shrine:mybattlefield controller])) ueot +text=Flying -- At the beginning of your end step, you may pay {1}. When you do, target player mills X cards, where X is the number of Shrines you control. (To mill a card, a player puts the top card of their library into their graveyard.) +mana={1}{U} +type=Legendary Enchantment Creature +subtype=Shrine +power=0 +toughness=4 +[/card] +[card] name=Go-Shintai of Shared Purpose abilities=vigilance auto=@each my endofturn:pay[[{1}]] && create(spirit:creature spirit:1/1:colorless)*type:shrine:myBattlefield @@ -41225,7 +41407,7 @@ subtype=Swamp Forest [/card] [card] name=Haunted One -auto=@tapped(*[iscommander]|myBattlefield):name(Gains 2/0 and undying) all(trigger) transforms((,newability[undying],newability[2/0],newability[name(Other creature gains 2/0 and undying) target(other *[share!subtype!]|myBattlefield) transforms((,newability[2/0],newability[undying])) ueot ])) ueot +auto=@tapped(*[iscommander]|myBattlefield):name(Gains 2/0 and undying) all(trigger) transforms((,newability[undying],newability[2/0],newability[name(Other creature gains 2/0 and undying) target(other *[creature;share!subtypes!]|myBattlefield) transforms((,newability[2/0],newability[undying])) ueot ])) ueot text=Commander creatures you own have "Whenever this creature becomes tapped, it and other creatures you control that share a creature type with it each get +2/+0 and gain undying until end of turn." (When a creature with undying dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.) mana={2}{B} type=Legendary Enchantment @@ -41698,6 +41880,18 @@ mana={R} type=Instant [/card] [card] +name=Heiko Yamazaki, the General +abilities=trample +auto=@combat(attackedalone) source(samurai[-warrior]|mybattlefield):may name(Cast artifact from graveyard) target(artifact|mygraveyard) transforms((,newability[canplayfromgraveyard])) ueot +auto=@combat(attackedalone) source(warrior[-samurai]|mybattlefield):may name(Cast artifact from graveyard) target(artifact|mygraveyard) transforms((,newability[canplayfromgraveyard])) ueot +text=Trample -- Whenever a Samurai or Warrior you control attacks alone, you may cast target artifact card from your graveyard this turn. +mana={3}{R} +type=Legendary Creature +subtype=Human Samurai +power=3 +toughness=3 +[/card] +[card] name=Heir of the Ancient Fang auto=if type(creature[modified]|myBattlefield)~morethan~0 then name(Put 1/1 counter) name(Put 1/1 counter) counter(1/1) text=Heir of the Ancient Fang enters the battlefield with a +1/+1 counter on it if you control a modified creature. (Equipment, Auras you control, and counters are modifications.) @@ -42410,6 +42604,21 @@ power=4 toughness=5 [/card] [card] +name=Hidetsugu Consumes All +backside=Vessel of the All-Consuming +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0,1,Lore) +auto=@each my firstmain:counter(0/0,1,Lore) +auto=name(Destroy nonland permanents) all(*[-land&manacost<=1]|battlefield) destroy +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) name(Exile all graveyards) name(Exile all graveyards) all(*|graveyard) moveto(exile) +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Destroy each nonland permanent with mana value 1 or less. -- II - Exile all graveyards. -- III - Exile this Saga, then return it to the battlefield transformed under your control. +mana={1}{B}{R} +type=Enchantment +subtype=Saga +[/card] +[card] name=Hidetsugu and Kairi abilities=flying auto=draw:3 && transforms((,newability[name(Put on library) target(<2>*|myhand) moveto(mylibrary)])) oneshot @@ -47162,6 +47371,22 @@ type=Enchantment subtype=Saga [/card] [card] +name=Inventive Iteration +backside=Living Breakthrough +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0,1,Lore) +auto=@each my firstmain:counter(0/0,1,Lore) +auto=may name(Return creature or planeswalker) target(*[creature;planeswalker]|battlefield) moveto(ownerhand) +auto=@counteradded(0/0,1,Lore) from(this) restriction{type(artifact|mygraveyard)~morethan~0}:this(counter{0/0.2.Lore}=) name(Return and artifact) name(Return and artifact) target(artifact|mygraveyard) moveto(myhand) +auto=@counteradded(0/0,1,Lore) from(this) restriction{type(artifact|mygraveyard)~equalto~0}:this(counter{0/0.2.Lore}=) name(Draw a card) name(Draw a card) draw:1 controller +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Return up to one target creature or planeswalker to its owner's hand. -- II - Return an artifact card from your graveyard to your hand. If you can't, draw a card. -- III - Exile this Saga, then return it to the battlefield transformed under your control. +mana={3}{U} +type=Enchantment +subtype=Saga +[/card] +[card] name=Invert // Invent other={4}{U}{R} name(Invent) auto=ifnot paid(alternative) then target(creature) transforms((,setpower=toughness,settoughness=power)) ueot @@ -47215,6 +47440,14 @@ mana={1}{B}{B}{B}{B} type=Sorcery [/card] [card] +name=Invoke Justice +target=*[-instant;-sorcery]|mygraveyard +auto=moveTo(mybattlefield) and!( transforms((,newability[choice name(Target yourself) thisforeach(variable{4}) ability$!name(Put 1/1 counter) name(Put 1/1 counter) target(*[creature;vehicle]|mybattlefield) counter(1/1)!$ controller],newability[choice name(Target opponent) thisforeach(variable{4}) ability$!name(Put 1/1 counter) name(Put 1/1 counter) target(*[creature;vehicle]|opponentbattlefield) counter(1/1)!$ controller])) ueot)! +text=Return target permanent card from your graveyard to the battlefield, then distribute four +1/+1 counters among any number of creatures and/or Vehicles target player controls. +mana={1}{W}{W}{W}{W} +type=Sorcery +[/card] +[card] name=Invoke the Ancients auto=token(Spirit,Creature Spirit,4/5,green)*2 and!( transforms((,newability[this(counter{0/0.1.Vigilance}>=1) vigilance],newability[this(counter{0/0.1.Reach}>=1) reach],newability[this(counter{0/0.1.Trample}>=1) trample],newability[choice name(Vigilance counter) counter(0/0.1.Vigilance)],newability[choice name(Reach counter) counter(0/0.1.Reach)],newability[choice name(Trample counter) counter(0/0.1.Trample)])) forever )! text=Create two 4/5 green Spirit creature tokens. For each of them, put your choice of a vigilance counter, a reach counter, or a trample counter on it. @@ -47349,6 +47582,17 @@ type=Enchantment subtype=Aura [/card] [card] +name=Iron Apprentice +auto=counter(1/1) +auto=_DIES_name(Put 1/1 counters) target(creature|myBattlefield) counter(1/1,hascnt11) +text=Iron Apprentice enters the battlefield with a +1/+1 counter on it. -- When Iron Apprentice dies, if it had counters on it, put those counters on target creature you control. +mana={1} +type=Artifact Creature +subtype=Construct +power=0 +toughness=0 +[/card] +[card] name=Iron Bully abilities=menace auto=counter(1/1) target(creature) @@ -48715,7 +48959,7 @@ auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=token(Human Monk) auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}<=2) may name(Put 1/1 counter) target(creature|battlefield) counter(1/1) -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Create a 1/1 green Human Monk creature token with "{T}: Add {G}." -- II - Put a +1/+1 counter on each of up to two target creatures. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={2}{G} type=Enchantment @@ -49056,6 +49300,18 @@ power=3 toughness=3 [/card] [card] +name=Kairi, the Swirling Sky +abilities=flying +auto=_WARD_(3) +auto=_DIES_name(Choose one) transforms((,newability[choice name(Return nonland permanents) target(*[-land&manacost<=6]|battlefield) moveto(ownerhand)],newability[choice name(Mill 6 cards) name(Mill 6 cards) deplete:6 controller && ability$!may name(Return instant or sorcery) name(Return instant or sorcery) target(*[instant;sorcery]|mygraveyard) moveto(myhand)!$ controller])) oneshot +text=Flying, ward {3} -- When Kairi, the Swirling Sky dies, choose one -- Return any number of target nonland permanents with total mana value 6 or less to their owners' hands. -- Mill six cards, then return up to two instant and/or sorcery cards from your graveyard to your hand. +mana={4}{U}{U} +type=Legendary Creature +subtype=Dragon Spirit +power=6 +toughness=6 +[/card] +[card] name=Kaito's Pursuit target=player auto=ability$!name(discard) reject notatarget(<2>*|myhand)!$ targetedplayer @@ -49256,6 +49512,16 @@ power=3 toughness=3 [/card] [card] +name=Kami of Industry +auto=name(Return artifact) target(artifact[manacost<=3]|mygraveyard) moveTo(mybattlefield) and!( transforms((,newability[haste],newability[treason])) forever)! +text=When Kami of Industry enters the battlefield, return target artifact card with mana value 3 or less from your graveyard to the battlefield. It gains haste. Sacrifice it at the beginning of the next end step. +mana={4}{R} +type=Creature +subtype=Spirit +power=3 +toughness=6 +[/card] +[card] name=Kami of Restless Shadows auto=may name(Return a Ninja) target(creature[Ninja]|mygraveyard) moveto(myhand) auto=may name(Return a Rogue) target(creature[Rogue]|mygraveyard) moveto(myhand) @@ -51738,7 +52004,7 @@ auto=@each my firstmain:counter(0/0,1,Lore) auto=name(Damage opponent) damage:1 opponent auto=name(Damage opponent's planeswalker) damage:1 all(planeswalker|opponentbattlefield) auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) name(Next creature gains 1/1 counter) name(Next creature gains 1/1 counter) emblem transforms((,newability[@movedto(creature|mybattlefield) from(mystack) turnlimited:name(Get 1/1 counter) name(Get 1/1 counter) all(trigger[to]) counter(1/1)])) ueot -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Kumano Faces Kakkazan deals 1 damage to each opponent and each planeswalker they control. -- II - When you cast your next creature spell this turn, that creature enters the battlefield with an additional +1/+1 counter on it. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={R} type=Enchantment @@ -53007,6 +53273,15 @@ power=2 toughness=2 [/card] [card] +name=Lethal Exploit +target=creature +auto=-2/-2 ueot +auto=foreach(creature[modified]|mybattlefield) -1/-1 ueot +text=Target creature gets -2/-2 until end of turn. It gets an additional -1/-1 until end of turn for each modified creature you controlled as you cast this spell. (Equipment, Auras you control, and counters are modifications.) +mana={1}{B} +type=Instant +[/card] +[card] name=Lethal Sting target=creature|myBattlefield auto=counter(-1/-1) @@ -53333,7 +53608,7 @@ auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=transforms((,newability[if type(creature|battlefield)~morethan~0 then choice name(Creature gets 2/2) name(Creature gets 2/2) target(creature|battlefield) 2/2 ueot],newability[if type(creature|battlefield)~morethan~0 then choice name(Creature gets -1/-1) name(Creature gets -1/-1) target(creature|battlefield) -1/-1 ueot],newability[choice name(Gain 2 life) life:2 controller])) oneshot auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) transforms((,newability[if type(creature|battlefield)~morethan~0 then choice name(Creature gets 2/2) name(Creature gets 2/2) target(creature|battlefield) 2/2 ueot],newability[if type(creature|battlefield)~morethan~0 then choice name(Creature gets -1/-1) name(Creature gets -1/-1) target(creature|battlefield) -1/-1 ueot],newability[choice name(Gain 2 life) life:2 controller])) oneshot -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! text=(As this Saga enters and after your draw step, add a lore counter.) -- I, II - Choose one -- Target creature gets +2/+2 until end of turn. -- Target creature gets -1/-1 until end of turn. -- You gain 2 life. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={1}{B} type=Enchantment @@ -53428,6 +53703,16 @@ mana={W} type=Instant [/card] [card] +name=Light-Paws, Emperor's Voice +auto=@movedto(aura|mybattlefield) from(mystack):may name(Search aura) all(trigger[to]) name(Search aura) transforms((,newability[name(Search aura) target(aura[manacost<=manacost]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[name(Attach aura) retarget target(Light-Paws^ Emperor's Voice|mybattlefield)])) oneshot )!])) oneshot +text=Whenever an Aura enters the battlefield under your control, if you cast it, you may search your library for an Aura card with mana value less than or equal to that Aura and with a different name than each Aura you control, put that card onto the battlefield attached to Light-Paws, Emperor's Voice, then shuffle. +mana={1}{W} +type=Legendary Creature +subtype=Fox Advisor +power=2 +toughness=2 +[/card] +[card] name=Lightfoot Rogue auto=_ATTACKING_name(Roll a d20) rolld20 20 winability transforms((,newability[3/0],newability[first strike])) ueot winabilityend rolld20end auto=@dierolled(this) from(controller):name(Gains deathtouch) transforms((,newability[deathtouch])) ueot @@ -53965,6 +54250,37 @@ type=Artifact subtype=Equipment [/card] [card] +name=Living Breakthrough +abilities=flying +auto=@movedTo(*[manacost=0]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=0])0 opponent])) uynt +auto=@movedTo(*[manacost=1]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=1])0 opponent])) uynt +auto=@movedTo(*[manacost=2]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=2])0 opponent])) uynt +auto=@movedTo(*[manacost=3]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=3])0 opponent])) uynt +auto=@movedTo(*[manacost=4]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=4])0 opponent])) uynt +auto=@movedTo(*[manacost=5]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=5])0 opponent])) uynt +auto=@movedTo(*[manacost=6]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=6])0 opponent])) uynt +auto=@movedTo(*[manacost=7]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=7])0 opponent])) uynt +auto=@movedTo(*[manacost=8]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=8])0 opponent])) uynt +auto=@movedTo(*[manacost=9]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=9])0 opponent])) uynt +auto=@movedTo(*[manacost=10]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=10])0 opponent])) uynt +auto=@movedTo(*[manacost=11]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=11])0 opponent])) uynt +auto=@movedTo(*[manacost=12]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=12])0 opponent])) uynt +auto=@movedTo(*[manacost=13]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=13])0 opponent])) uynt +auto=@movedTo(*[manacost=14]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=14])0 opponent])) uynt +auto=@movedTo(*[manacost=15]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=15])0 opponent])) uynt +auto=@movedTo(*[manacost=16]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=16])0 opponent])) uynt +auto=@movedTo(*[manacost=17]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=17])0 opponent])) uynt +auto=@movedTo(*[manacost=18]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=18])0 opponent])) uynt +auto=@movedTo(*[manacost=19]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost=19])0 opponent])) uynt +auto=@movedTo(*[manacost>=20]|mystack):name(Opponent can't cast spells) transforms((,newability[maxcast(*[manacost>=20])0 opponent])) uynt +text=Flying -- Whenever you cast a spell, your opponents can't cast spells with the same mana value as that spell until your next turn. +color=blue +type=Enchantment Creature +subtype=Moonfolk +power=3 +toughness=3 +[/card] +[card] name=Living Destiny target=*|myhand auto=life:manacost controller @@ -56325,6 +56641,26 @@ mana={3}{W}{B} type=Sorcery [/card] [card] +name=March of Otherworldly Light +other={X}{W} name(Cast and exile white cards) +otherrestriction=type(other *[white]|myhand)~morethan~0,type(*[creature;artifact;enchantment]|battlefield)~morethan~0 +restriction=type(*[creature;artifact;enchantment]|battlefield)~morethan~0 +auto=if paid(alternative) then if type(other *[white]|myhand)~morethan~0 then choice name(Exile permanent and exile 1 white card) name(Exile permanent and exile 1 white card) name(Exile permanent and exile 1 white card) ability$!name(Choose one) choice name(Exile creature) target(creature[manacost<=storedfullpaidplus2plusend]|battlefield) moveto(exile) and!( name(Exile 1 white card) target(*[white]|myhand) moveto(myexile) )! _ choice name(Exile artifact) target(artifact[manacost<=storedfullpaidplus2plusend]|battlefield) moveto(exile) and!( name(Exile 1 white card) target(*[white]|myhand) moveto(myexile) )! _ choice name(Exile enchantment) target(enchantment[manacost<=storedfullpaidplus2plusend]|battlefield) moveto(exile) and!( name(Exile 1 white card) target(*[white]|myhand) moveto(myexile) )!!$ controller +auto=if paid(alternative) then if type(other *[white]|myhand)~morethan~1 then choice name(Exile permanent and exile 2 white cards) name(Exile permanent and exile 2 white cards) name(Exile permanent and exile 2 white cards) ability$!name(Choose one) choice name(Exile creature) target(creature[manacost<=storedfullpaidplus4plusend]|battlefield) moveto(exile) and!( name(Exile 2 white cards) target(<2>*[white]|myhand) moveto(myexile) )! _ choice name(Exile artifact) target(artifact[manacost<=storedfullpaidplus4plusend]|battlefield) moveto(exile) and!( name(Exile 2 white cards) target(<2>*[white]|myhand) moveto(myexile) )! _ choice name(Exile enchantment) target(enchantment[manacost<=storedfullpaidplus4plusend]|battlefield) moveto(exile) and!( name(Exile 2 white cards) target(<2>*[white]|myhand) moveto(myexile) )!!$ controller +auto=if paid(alternative) then if type(other *[white]|myhand)~morethan~2 then choice name(Exile permanent and exile 3 white cards) name(Exile permanent and exile 3 white cards) name(Exile permanent and exile 3 white cards) ability$!name(Choose one) choice name(Exile creature) target(creature[manacost<=storedfullpaidplus6plusend]|battlefield) moveto(exile) and!( name(Exile 3 white cards) target(<3>*[white]|myhand) moveto(myexile) )! _ choice name(Exile artifact) target(artifact[manacost<=storedfullpaidplus6plusend]|battlefield) moveto(exile) and!( name(Exile 3 white cards) target(<3>*[white]|myhand) moveto(myexile) )! _ choice name(Exile enchantment) target(enchantment[manacost<=storedfullpaidplus6plusend]|battlefield) moveto(exile) and!( name(Exile 3 white cards) target(<3>*[white]|myhand) moveto(myexile) )!!$ controller +auto=if paid(alternative) then if type(other *[white]|myhand)~morethan~3 then choice name(Exile permanent and exile 4 white cards) name(Exile permanent and exile 4 white cards) name(Exile permanent and exile 4 white cards) ability$!name(Choose one) choice name(Exile creature) target(creature[manacost<=storedfullpaidplus8plusend]|battlefield) moveto(exile) and!( name(Exile 4 white cards) target(<4>*[white]|myhand) moveto(myexile) )! _ choice name(Exile artifact) target(artifact[manacost<=storedfullpaidplus8plusend]|battlefield) moveto(exile) and!( name(Exile 4 white cards) target(<4>*[white]|myhand) moveto(myexile) )! _ choice name(Exile enchantment) target(enchantment[manacost<=storedfullpaidplus8plusend]|battlefield) moveto(exile) and!( name(Exile 4 white cards) target(<4>*[white]|myhand) moveto(myexile) )!!$ controller +auto=if paid(alternative) then if type(other *[white]|myhand)~morethan~4 then choice name(Exile permanent and exile 5 white cards) name(Exile permanent and exile 5 white cards) name(Exile permanent and exile 5 white cards) ability$!name(Choose one) choice name(Exile creature) target(creature[manacost<=storedfullpaidplus10plusend]|battlefield) moveto(exile) and!( name(Exile 5 white cards) target(<5>*[white]|myhand) moveto(myexile) )! _ choice name(Exile artifact) target(artifact[manacost<=storedfullpaidplus10plusend]|battlefield) moveto(exile) and!( name(Exile 5 white cards) target(<5>*[white]|myhand) moveto(myexile) )! _ choice name(Exile enchantment) target(enchantment[manacost<=storedfullpaidplus10plusend]|battlefield) moveto(exile) and!( name(Exile 5 white cards) target(<5>*[white]|myhand) moveto(myexile) )!!$ controller +auto=if paid(alternative) then if type(other *[white]|myhand)~morethan~5 then choice name(Exile permanent and exile 6 white cards) name(Exile permanent and exile 6 white cards) name(Exile permanent and exile 6 white cards) ability$!name(Choose one) choice name(Exile creature) target(creature[manacost<=storedfullpaidplus12plusend]|battlefield) moveto(exile) and!( name(Exile 6 white cards) target(<6>*[white]|myhand) moveto(myexile) )! _ choice name(Exile artifact) target(artifact[manacost<=storedfullpaidplus12plusend]|battlefield) moveto(exile) and!( name(Exile 6 white cards) target(<6>*[white]|myhand) moveto(myexile) )! _ choice name(Exile enchantment) target(enchantment[manacost<=storedfullpaidplus12plusend]|battlefield) moveto(exile) and!( name(Exile 6 white cards) target(<6>*[white]|myhand) moveto(myexile) )!!$ controller +auto=if paid(alternative) then if type(other *[white]|myhand)~morethan~6 then choice name(Exile permanent and exile 7 white cards) name(Exile permanent and exile 7 white cards) name(Exile permanent and exile 7 white cards) ability$!name(Choose one) choice name(Exile creature) target(creature[manacost<=storedfullpaidplus14plusend]|battlefield) moveto(exile) and!( name(Exile 7 white cards) target(<7>*[white]|myhand) moveto(myexile) )! _ choice name(Exile artifact) target(artifact[manacost<=storedfullpaidplus14plusend]|battlefield) moveto(exile) and!( name(Exile 7 white cards) target(<7>*[white]|myhand) moveto(myexile) )! _ choice name(Exile enchantment) target(enchantment[manacost<=storedfullpaidplus14plusend]|battlefield) moveto(exile) and!( name(Exile 7 white cards) target(<7>*[white]|myhand) moveto(myexile) )!!$ controller +auto=if paid(alternative) then if type(other *[white]|myhand)~morethan~7 then choice name(Exile permanent and exile 8 white cards) name(Exile permanent and exile 8 white cards) name(Exile permanent and exile 8 white cards) ability$!name(Choose one) choice name(Exile creature) target(creature[manacost<=storedfullpaidplus16plusend]|battlefield) moveto(exile) and!( name(Exile 8 white cards) target(<8>*[white]|myhand) moveto(myexile) )! _ choice name(Exile artifact) target(artifact[manacost<=storedfullpaidplus16plusend]|battlefield) moveto(exile) and!( name(Exile 8 white cards) target(<8>*[white]|myhand) moveto(myexile) )! _ choice name(Exile enchantment) target(enchantment[manacost<=storedfullpaidplus16plusend]|battlefield) moveto(exile) and!( name(Exile 8 white cards) target(<8>*[white]|myhand) moveto(myexile) )!!$ controller +auto=if paid(alternative) then if type(other *[white]|myhand)~morethan~8 then choice name(Exile permanent and exile 9 white cards) name(Exile permanent and exile 9 white cards) name(Exile permanent and exile 9 white cards) ability$!name(Choose one) choice name(Exile creature) target(creature[manacost<=storedfullpaidplus18plusend]|battlefield) moveto(exile) and!( name(Exile 9 white cards) target(<9>*[white]|myhand) moveto(myexile) )! _ choice name(Exile artifact) target(artifact[manacost<=storedfullpaidplus18plusend]|battlefield) moveto(exile) and!( name(Exile 9 white cards) target(<9>*[white]|myhand) moveto(myexile) )! _ choice name(Exile enchantment) target(enchantment[manacost<=storedfullpaidplus18plusend]|battlefield) moveto(exile) and!( name(Exile 9 white cards) target(<9>*[white]|myhand) moveto(myexile) )!!$ controller +auto=if paid(alternative) then if type(other *[white]|myhand)~morethan~9 then choice name(Exile permanent and exile 10 white cards) name(Exile permanent and exile 10 white cards) name(Exile permanent and exile 10 white cards) ability$!name(Choose one) choice name(Exile creature) target(creature[manacost<=storedfullpaidplus20plusend]|battlefield) moveto(exile) and!( name(Exile 10 white cards) target(<10>*[white]|myhand) moveto(myexile) )! _ choice name(Exile artifact) target(artifact[manacost<=storedfullpaidplus20plusend]|battlefield) moveto(exile) and!( name(Exile 10 white cards) target(<10>*[white]|myhand) moveto(myexile) )! _ choice name(Exile enchantment) target(enchantment[manacost<=storedfullpaidplus20plusend]|battlefield) moveto(exile) and!( name(Exile 10 white cards) target(<10>*[white]|myhand) moveto(myexile) )!!$ controller +auto=ifnot paid(alternative) then name(Exile permanent) name(Exile permanent) ability$!name(Choose one) choice name(Exile creature) target(creature[manacost<=storedfullpaid]|battlefield) moveto(exile) _ choice name(Exile artifact) target(artifact[manacost<=storedfullpaid]|battlefield) moveto(exile) _ choice name(Exile enchantment) target(enchantment[manacost<=storedfullpaid]|battlefield) moveto(exile)!$ controller +text=As an additional cost to cast this spell, you may exile any number of white cards from your hand. This spell costs {2} less to cast for each card exiled this way. -- Exile target artifact, creature, or enchantment with mana value X or less. +mana={X}{W} +type=Instant +[/card] +[card] name=March of Progress abilities=overload target=artifact[creature]|myBattlefield @@ -56336,6 +56672,25 @@ mana={2}{U} type=Sorcery [/card] [card] +name=March of Swirling Mist +other={X}{U} name(Cast and exile blue cards) +otherrestriction=type(*[blue]|myhand)~morethan~0 +auto=if paid(alternative) then if type(other *[blue]|myhand)~morethan~0 then choice name(Phase out creatures and exile 1 blue card) name(Phase out creatures and exile 1 blue card) name(Phase out creatures and exile 1 blue card) activate castcard(copied noevent costx!:fullpaidplus2plusend:! named!:March of Swirling Mist:!) and!( ability$!name(Exile 1 blue card) target(*[blue]|myhand) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(other *[blue]|myhand)~morethan~1 then choice name(Phase out creatures and exile 2 blue cards) name(Phase out creatures and exile 2 blue cards) name(Phase out creatures and exile 2 blue cards) activate castcard(copied noevent costx!:fullpaidplus4plusend:! named!:March of Swirling Mist:!) and!( ability$!name(Exile 2 blue cards) target(<2>*[blue]|myhand) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(other *[blue]|myhand)~morethan~2 then choice name(Phase out creatures and exile 3 blue cards) name(Phase out creatures and exile 3 blue cards) name(Phase out creatures and exile 3 blue cards) activate castcard(copied noevent costx!:fullpaidplus6plusend:! named!:March of Swirling Mist:!) and!( ability$!name(Exile 3 blue cards) target(<3>*[blue]|myhand) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(other *[blue]|myhand)~morethan~3 then choice name(Phase out creatures and exile 4 blue cards) name(Phase out creatures and exile 4 blue cards) name(Phase out creatures and exile 4 blue cards) activate castcard(copied noevent costx!:fullpaidplus8plusend:! named!:March of Swirling Mist:!) and!( ability$!name(Exile 4 blue cards) target(<4>*[blue]|myhand) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(other *[blue]|myhand)~morethan~4 then choice name(Phase out creatures and exile 5 blue cards) name(Phase out creatures and exile 5 blue cards) name(Phase out creatures and exile 5 blue cards) activate castcard(copied noevent costx!:fullpaidplus10plusend:! named!:March of Swirling Mist:!) and!( ability$!name(Exile 5 blue cards) target(<5>*[blue]|myhand) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(other *[blue]|myhand)~morethan~5 then choice name(Phase out creatures and exile 6 blue cards) name(Phase out creatures and exile 6 blue cards) name(Phase out creatures and exile 6 blue cards) activate castcard(copied noevent costx!:fullpaidplus12plusend:! named!:March of Swirling Mist:!) and!( ability$!name(Exile 6 blue cards) target(<6>*[blue]|myhand) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(other *[blue]|myhand)~morethan~6 then choice name(Phase out creatures and exile 7 blue cards) name(Phase out creatures and exile 7 blue cards) name(Phase out creatures and exile 7 blue cards) activate castcard(copied noevent costx!:fullpaidplus14plusend:! named!:March of Swirling Mist:!) and!( ability$!name(Exile 7 blue cards) target(<7>*[blue]|myhand) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(other *[blue]|myhand)~morethan~7 then choice name(Phase out creatures and exile 8 blue cards) name(Phase out creatures and exile 8 blue cards) name(Phase out creatures and exile 8 blue cards) activate castcard(copied noevent costx!:fullpaidplus16plusend:! named!:March of Swirling Mist:!) and!( ability$!name(Exile 8 blue cards) target(<8>*[blue]|myhand) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(other *[blue]|myhand)~morethan~8 then choice name(Phase out creatures and exile 9 blue cards) name(Phase out creatures and exile 9 blue cards) name(Phase out creatures and exile 9 blue cards) activate castcard(copied noevent costx!:fullpaidplus18plusend:! named!:March of Swirling Mist:!) and!( ability$!name(Exile 9 blue cards) target(<9>*[blue]|myhand) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(other *[blue]|myhand)~morethan~9 then choice name(Phase out creatures and exile 10 blue cards) name(Phase out creatures and exile 10 blue cards) name(Phase out creatures and exile 10 blue cards) activate castcard(copied noevent costx!:fullpaidplus20plusend:! named!:March of Swirling Mist:!) and!( ability$!name(Exile 10 blue cards) target(<10>*[blue]|myhand) moveto(myexile)!$ controller )! +auto=ifnot paid(alternative) then name(Phase out creatures) name(Phase out creatures) target(creature|battlefield) phaseout +text=As an additional cost to cast this spell, you may exile any number of blue cards from your hand. This spell costs {2} less to cast for each card exiled this way. -- Up to X target creatures phase out. (While they're phased out, they're treated as though they don't exist. Each one phases in before its controller untaps during their next untap step.) +mana={X}{U} +type=Instant +[/card] +[card] name=March of the Drowned auto=choice name(return creature) moveto(myhand) target(creature|mygraveyard) auto=choice name(return pirates) moveto(myhand) target(<2>pirate|mygraveyard) @@ -57065,6 +57420,14 @@ power=3 toughness=4 [/card] [card] +name=Mech Hangar +auto={T}:add{C} +auto=aslongas(*[vehicle;pilot]|myrestrictedcastingzone) transforms((,newability[{T}:add{W}],newability[{T}:add{U}],newability[{T}:add{B}],newability[{T}:add{R}],newability[{T}:add{G}])) +auto={3}{T}:name(Vehicle becomes creature) target(vehicle|battlefield) becomes(Artifact Creature) ueot +text={T}: Add {C}. -- {T}: Add one mana of any color. Spend this mana only to cast a Pilot or Vehicle spell. -- {3}, {T}: Target Vehicle becomes an artifact creature until end of turn. +type=Land +[/card] +[card] name=Mechanized Warfare auto=@damaged(*|opponentbattlefield) from(artifact[-red]|mybattlefield):all(trigger[to]) damage:1 auto=@damagefoeof(player) from(artifact[-red]|mybattlefield):damage:1 opponent @@ -57795,7 +58158,7 @@ auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=this(counter{0/0.1.Lore}) target(creature) transforms((,newability[foreach(*[artifact;enchantment]|mybattlefield) 1/1])) ueot auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) target(creature) transforms((,newability[foreach(*[artifact;enchantment]|mybattlefield) 1/1])) ueot -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Creature) )! asSorcery +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! asSorcery text=(As this Saga enters and after your draw step, add a lore counter.) -- I, II - Target creature gets +1/+1 until end of turn for each artifact and/or enchantment you control. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={1}{W} type=Enchantment @@ -58490,6 +58853,15 @@ mana={B} type=Instant [/card] [card] +name=Mirror Box +abilities=legendruleremove +auto=lord(creature[legendary]|myBattlefield) 1/1 +auto=lord(creature[-token]|myBattlefield) transforms((,newability[foreach(other creature[share!name!]|mybattlefield) 1/1])) +text=The "legend rule" doesn't apply to permanents you control. -- Each legendary creature you control gets +1/+1. -- Each nontoken creature you control gets +1/+1 for each other creature you control with the same name as that creature. +mana={3} +type=Artifact +[/card] +[card] name=Mirror Image auto=may copy NotATarget(creature|myBattlefield) text=You may have Mirror Image enter the battlefield as a copy of any creature you control. @@ -61039,6 +61411,17 @@ power=3 toughness=3 [/card] [card] +name=Naomi, Pillar of Order +auto=if type(artifact|mybattlefield)~morethan~0 then if type(enchantment|mybattlefield)~morethan~0 then name(Create samurai) name(Create samurai) name(Create samurai) token(Samurai,Creature Samurai,2/2,white,vigilance) +auto=@combat(attacking) source(this) restriction{type(artifact|mybattlefield)~morethan~0,type(enchantment|mybattlefield)~morethan~0}:name(Create samurai) name(Create samurai) name(Create samurai) token(Samurai,Creature Samurai,2/2,white,vigilance) +text=Whenever Naomi, Pillar of Order enters the battlefield or attacks, if you control an artifact and an enchantment, create a 2/2 white Samurai creature token with vigilance. +mana={3}{W}{B} +type=Legendary Creature +subtype=Human Advisor +power=4 +toughness=4 +[/card] +[card] name=Narfi, Betrayer King auto=lord(other *[zombie;snow]|mybattlefield) 1/1 autograveyard={i}{i}{i}:moveto(mybattlefield) and!( tap(noevent) )! @@ -63241,6 +63624,17 @@ power=2 toughness=5 [/card] [card] +name=O-Kagachi Made Manifest +abilities=flying,trample +auto=_ATTACKING_name(Opponent returns a nonland card) ability$!name(Return a nonland card) name(Return a nonland card) target(*[-land]|opponentgraveyard) moveto(opponenthand) and!( transforms((,newability[name(Creature gains X/0) name(Creature gains X/0) target(*[O-Kagachi Made Manifest&attacking]|myBattlefield|) manacost/0 ueot])) ueot )! !$ opponent +text=O-Kagachi Made Manifest is all colors. -- Flying, trample -- Whenever O-Kagachi Made Manifest attacks, defending player chooses a nonland card in your graveyard. Return that card to your hand. O-Kagachi Made Manifest gets +X/+0 until end of turn, where X is the mana value of that card. +color=black,white,green,red,blue +type=Enchantment Creature +subtype=Dragon Spirit +power=6 +toughness=6 +[/card] +[card] name=O-Kagachi, Vengeful Kami abilities=flying,trample auto=@combat(attacking) source(creature|opponentbattlefield) restriction{opponentturnonly}:counter(0/0,1,KamiEffect) all(this) @@ -63980,13 +64374,21 @@ auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=life:-1 opponent && life:1 auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}<=2) life:-1 opponent && life:1 -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Creature) )! asSorcery +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Creature) )! asSorcery text=(As this Saga enters and after your draw step, add a lore counter.) -- I, II - Each opponent loses 1 life and you gain 1 life. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={B} type=Enchantment subtype=Saga [/card] [card] +name=Okiba Salvage +target=*[creature;vehicle]|mybattlefield +auto=moveTo(mybattlefield) and!( transforms((,newability[if type(artifact|myBattlefield)~morethan~0 then if type(enchantment|myBattlefield)~morethan~0 then name(Put 1/1 counter) name(Put 1/1 counter) name(Put 1/1 counter) counter(1/1.2)])) oneshot )! +text=Return target creature or Vehicle card from your graveyard to the battlefield. Then put two +1/+1 counters on that permanent if you control an artifact and an enchantment. +mana={4}{B} +type=Sorcery +[/card] +[card] name=Oko's Accomplices abilities=flying text=Flying @@ -70772,7 +71174,8 @@ toughness=6 [/card] [card] name=Quarry Hauler -auto=_PROLIFERATE_ +auto=name(Put counters) target(*[counter{any}]|battlefield) duplicatecounters(all,single) +auto=name(Remove counters) target(*[counter{any}]|battlefield) removesinglecountertype(all,1) text=When Quarry Hauler enters the battlefield, for each kind of counter on target permanent, put another counter of that kind on it or remove one from it. mana={3}{G} type=Creature @@ -72909,6 +73312,20 @@ power=2 toughness=3 [/card] [card] +name=Reckoner Bankbuster +auto=counter(0/0,3,Charge) +auto={2}{T}{C(0/0,-1,Charge)}:name(Draw a card) draw:1 controller && if compare(hascntcharge)~equalto~0 then token(Treasure) && if compare(hascntcharge)~equalto~0 then token(Pilot) +auto={crew(other creature[power>=3]|myBattlefield)}:name(crew 3 [1 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=3]|mybattlefield)~morethan~0,compare(crewtotalpower)~morethan~2} +auto={crew(other creature[power>=1]|myBattlefield)}{crew(other creature[power>=2]|myBattlefield)}:name(crew 3 [2 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=1]|mybattlefield)~morethan~0,type(other creature[-tapped;power>=2]|mybattlefield)~morethan~0,type(other creature[-tapped;-cantcrew]|mybattlefield)~morethan~1,compare(crewtotalpower)~morethan~2} +auto={crew(other creature[power>=1]|myBattlefield)}{crew(other creature[power>=1]|myBattlefield)}{crew(other creature[power>=1]|myBattlefield)}:name(crew 3 [3 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=1]|mybattlefield)~morethan~2,compare(crewtotalpower)~morethan~2} +text=Reckoner Bankbuster enters the battlefield with three charge counters on it. -- {2}, {T}, Remove a charge counter from Reckoner Bankbuster: Draw a card. Then if there are no charge counters on Reckoner Bankbuster, create a Treasure token and a 1/1 colorless Pilot creature token with "This creature crews Vehicles as though its power were 2 greater." -- Crew 3 +mana={2} +type=Artifact +subtype=Vehicle +power=4 +toughness=4 +[/card] +[card] name=Reckoner Shakedown auto=if type(*[-land]|opponenthand)~morethan~0 then name(Look opponent hand) name(Look opponent hand) target(*[-land]|opponenthand) moveto(myhand) and!( transforms((,newability[choice name(Discard card) moveto(opponenthand) and!( reject )!],newability[choice name(Don't discard) moveto(opponenthand) and!( name(Put 1/1 counters) target(*[creature;vehicle]|mybattlefield) counter(1/1.2) )!])) ueot )! auto=if type(*|opponenthand)~morethan~0 then if type(*[-land]|opponenthand)~equalto~0 then name(Look opponent hand) name(Look opponent hand) name(Look opponent hand) target(*|opponenthand) moveto(myhand) and!( transforms((,newability[moveto(opponenthand) and!( name(Put 1/1 counters) target(*[creature;vehicle]|mybattlefield) counter(1/1.2) )!])) ueot )! @@ -75538,6 +75955,13 @@ mana={G}{G} type=Sorcery [/card] [card] +name=Roadside Reliquary +auto={T}:add{C} +auto={2}{T}{S}:name(Sacrifice and draw) transforms((,newability[if type(artifact|myBattlefield)~morethan~0 then name(Draw a card) name(Draw a card) draw:1 controller],newability[if type(enchantment|myBattlefield)~morethan~0 then name(Draw a card) name(Draw a card) draw:1 controller])) oneshot +text={T}: Add {C}. -- {2}, {T}, Sacrifice Roadside Reliquary: Draw a card if you control an artifact. Draw a card if you control an enchantment. +type=Land +[/card] +[card] name=Roalesk, Apex Hybrid abilities=flying,trample auto=counter(1/1,2) target(other creature|myBattlefield) @@ -78255,6 +78679,17 @@ power=2 toughness=3 [/card] [card] +name=Satsuki, the Living Lore +auto={T}:name(Put lore counter) all(enchantment[saga]|myBattlefield) counter(0/0,1,Lore) asSorcery +auto=_DIES_name(Choose one) transforms((,newability[if type(enchantment[saga;creature]|mybattlefield)~morethan~0 then choice name(Return saga or creature to hand) name(Return saga or creature to hand) target(enchantment[saga;creature]|mybattlefield) moveto(ownerhand)],newability[if type(enchantment[saga]|mygraveyard)~morethan~0 then choice name(Return saga from graveyard) name(Return saga from graveyard) target(enchantment[saga]|mygraveyard) moveto(myhand)])) oneshot +text={T}: Put a lore counter on each Saga you control. Activate only as a sorcery. -- When Satsuki, the Living Lore dies, choose up to one -- Return target Saga or enchantment creature you control to its owner's hand. -- Return target Saga card from your graveyard to your hand. +mana={G}{W} +type=Legendary Creature +subtype=Human Druid +power=1 +toughness=3 +[/card] +[card] name=Satyr Enchanter auto=@movedTo(enchantment|mystack):draw:1 text=Whenever you cast an enchantment spell, draw a card. @@ -79685,6 +80120,15 @@ mana={1}{G} type=Enchantment [/card] [card] +name=Season of Renewal +auto=if type(creature|mygraveyard)~morethan~0 then choice name(Return creature) name(Return creature) target(creature|mygraveyard) moveto(myhand) +auto=if type(enchantment|mygraveyard)~morethan~0 then choice name(Return enchantment) name(Return enchantment) target(enchantment|mygraveyard) moveto(myhand) +auto=if type(enchantment|mygraveyard)~morethan~0 then if type(creature|mygraveyard)~morethan~0 then choice name(Return creature and enchantment) name(Return creature and enchantment) name(Return creature and enchantment) target(creature|mygraveyard) moveto(myhand) and!( transforms((,newability[name(Return enchantment) name(Return enchantment) target(enchantment|mygraveyard) moveto(myhand)])) oneshot )! +text=Choose one or both -- Return target creature card from your graveyard to your hand. -- Return target enchantment card from your graveyard to your hand. +mana={2}{G} +type=Instant +[/card] +[card] name=Season's Beatings auto=choice name(Choose opponent) all(creature|opponentbattlefield) transforms((,newability[damage:p target(other creature|mybattlefield)])) oneshot auto=choice name(Choose yourself) all(creature|mybattlefield) transforms((,newability[damage:p target(other creature|mybattlefield)])) oneshot @@ -79745,6 +80189,13 @@ mana={4}{G}{G} type=Sorcery [/card] [card] +name=Secluded Courtyard +auto=chooseatype transforms((,newability[aslongas(creature[chosentype]|myrestrictedcastingzone) {T}:ability$!name(Add mana of any color) choice name(Add red mana) add{R} _ choice name(Add green mana) add{G} _ choice name(Add black mana) add{B} _ choice name(Add white mana) add{W} _ choice name(Add blue mana) add{U}!$ controller],newability[aslongas(creature[chosentype]|mybattlefield) {T}:ability$!name(Choose one) choice name(Add red mana) add{R} _ choice name(Add green mana) add{G} _ choice name(Add black mana) add{B} _ choice name(Add white mana) add{W} _ choice name(Add blue mana) add{U}!$ controller])) forever chooseend +auto={T}:add{C} +text=As Secluded Courtyard enters the battlefield, choose a creature type. -- {T}: Add {C}. -- {T}: Add one mana of any color. Spend this mana only to cast a creature spell of the chosen type or activate an ability of a creature or creature card of the chosen type. +type=Land +[/card] +[card] name=Second Sight aicode=name(look) activate name(look) transforms((,newability[foreach(*[zpos<=5]|mylibrary) moverandom(*[zpos<=5]) from(mylibrary) to(mylibrary)])) ueot aicode=name(look) activate name(look) transforms((,newability[foreach(*[zpos<=5]|opponentlibrary) moverandom(*[zpos<=5]) from(opponentlibrary) to(opponentlibrary)])) ueot @@ -80008,6 +80459,15 @@ mana={3}{R} type=Sorcery [/card] [card] +name=Seismic Wave +target=player,creature,planeswalker +auto=damage:2 +auto=all(creature[-artifact]|opponentbattlefield) damage:! +text=Seismic Wave deals 2 damage to any target and 1 damage to each nonartifact creature target opponent controls. +mana={2}{R} +type=Instant +[/card] +[card] name=Seize the Soul target=creature[-black;-white] auto=destroy and!( _SPIRITTOKEN_ controller )! @@ -81181,7 +81641,7 @@ type=Enchantment [/card] [card] name=Shared Animosity -auto=@combat(attacking) source(creature|myBattlefield): thisforeach(other creature[share! subtype!]|myBattlefield) 1/0 ueot +auto=@combat(attacking) source(creature|myBattlefield):name(Creature gains power) all(trigger[to]) transforms((,newability[thisforeach(other *[creature;share!types!]|myBattlefield) 1/0])) ueot text=Whenever a creature you control attacks, it gets +1/+0 until end of turn for each other attacking creature that shares a creature type with it. mana={2}{R} type=Enchantment @@ -82755,6 +83215,19 @@ power=1 toughness=1 [/card] [card] +name=Silver-Fur Master +#MISSING: Ninjutsu abilities you activate cost {1} less to activate. +autohand={U}{B}:ninjutsu +auto=lord(other creature[ninja]|mybattlefield) 1/1 +auto=lord(other creature[rogue]|mybattlefield) 1/1 +text=Ninjutsu {U}{B} ({U}{B}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking.) -- Ninjutsu abilities you activate cost {1} less to activate. -- Other Ninja and Rogue creatures you control get +1/+1. +mana={U}{B} +type=Creature +subtype=Rat Ninja +power=2 +toughness=2 +[/card] +[card] name=Silverback Shaman abilities=trample auto=_DIES_draw:1 @@ -88961,6 +89434,14 @@ power=2 toughness=2 [/card] [card] +name=Storyweave +auto=if type(creature|mybattlefield)~morethan~0 then choice name(Put 1/1 counters) name(Put 1/1 counters) target(creature|mybattlefield) counter(1/1,2) +auto=if type(enchantment[saga]|mybattlefield)~morethan~0 then choice name(Put lore counters) name(Put lore counters) emblem transforms((,newability[@movedto(creature[enchantment]|mybattlefield):name(Put 1/1 counters) all(trigger[to]) counter(1/1.2)],newability[name(Put lore counters) name(Put lore counters) target(enchantment[saga]|mybattlefield) counter(0/0.2.Lore)])) ueot +text=Choose one -- Put two +1/+1 counters on target creature you control. -- Put two lore counters on target Saga you control. The next time one or more enchantment creatures enter the battlefield under your control this turn, each enters with two additional +1/+1 counters on it. +mana={2}{G} +type=Instant +[/card] +[card] name=Strangle target=creature,planeswalker auto=damage:3 @@ -91297,7 +91778,7 @@ auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=target(creature,vehicle|myBattlefield) transforms((,newability[counter(1/1)],vigilance)) ueot auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}<=2) target(creature,vehicle|myBattlefield) transforms((,newability[counter(1/1)],vigilance)) ueot -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Creature) )! asSorcery +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Creature) )! asSorcery text=(As this Saga enters and after your draw step, add a lore counter.) -- I, II - Put a +1/+1 counter on target creature or Vehicle you control. It gains vigilance until end of turn. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={4}{G} type=Enchantment @@ -91464,6 +91945,13 @@ mana={2}{U} type=Artifact [/card] [card] +name=Tamiyo's Notebook +auto=lord(*[-land]|mycastingzone) altercost(colorless,-2) +auto={T}:name(Draw a card) draw:1 controller +text=Spells you cast cost {2} less to cast -- {T}: Draw a card. +type=Legendary Artifact +[/card] +[card] name=Tamiyo's Safekeeping target=*|myBattlefield auto=transforms((,newability[opponentshroud],newability[indestructible])) ueot @@ -91982,7 +92470,7 @@ auto=@each my firstmain:counter(0/0,1,Lore) auto=deplete:3 controller auto=token(Spirit,Creature Spirit,1/1) auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}<=2) name(Put 1/1 counter) target(creature|mybattlefield) counter(1/1) -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Mill three cards. Create a 1/1 colorless Spirit creature token. -- II - Put a +1/+1 counter on target creature you control. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={1}{G} type=Enchantment @@ -93227,7 +93715,7 @@ auto=life:2 controller auto=name(Look top 3 cards) reveal:3 optionone name(Exile a card) target(*|reveal) moveto(myexile) and!( counter(0/0.1.Hatching) )! optiononeend optiontwo name(Put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend revealend auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}<=2) name(Gain 2 life) name(Gain 2 life) life:2 controller auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}<=2) name(Look top 3 cards) name(Look top 3 cards) reveal:3 optionone name(Exile a card) target(*|reveal) moveto(myexile) and!( counter(0/0.1.Hatching) )! optiononeend optiontwo name(Put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend revealend -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! text=(As this Saga enters and after your draw step, add a lore counter.) -- I, II - You gain 2 life. Look at the top three cards of your library. Exile one of them face down with a hatching counter on it, then put the rest on the bottom of your library in any order. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={2}{G} type=Enchantment @@ -93283,6 +93771,21 @@ mana={4}{R}{R} type=Sorcery [/card] [card] +name=The Fall of Lord Konda +backside=Fragment of Konda +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0,1,Lore) +auto=@each my firstmain:counter(0/0,1,Lore) +auto=name(Exile opponent's creature) target(creature[manacost>=4]|opponentbattlefield) moveto(exile) +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) name(Revert to owner) name(Revert to owner) moveto(ownerbattlefield) all(*|battlefield) +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Exile target creature an opponent controls with mana value 4 or greater. -- II - Each player gains control of all permanents they own. -- III - Exile this Saga, then return it to the battlefield transformed under your control. +mana={2}{W} +type=Enchantment +subtype=Saga +[/card] +[card] name=The Filigree Sylex auto={T}:name(Put oil counter) counter(0/0,1,Oil) auto=this(variable{hascntoil}=0) {T}{S}:name(Destroy each nonland permanent) name(Destroy each nonland permanent) all(*[-land;manacost=0]|battlefield) destroy @@ -93462,6 +93965,21 @@ text=Whenever one or more creatures a player controls deal combat damage to you, type=Emblem [/card] [card] +name=The Kami War +backside=O-Kagachi Made Manifest +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0,1,Lore) +auto=@each my firstmain:counter(0/0,1,Lore) +auto=name(Exile nonland permanent) target(*[-land]|opponentbattlefield) moveto(exile) +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) name(Return nonland permanent) name(Return nonland permanent) target(*[-land]|battlefield) moveto(ownerhand) and!( ability$!name(Discard a card) name(Discard a card) notatarget(*|myhand) reject!$ opponent )! +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Exile target nonland permanent an opponent controls. -- II - Return up to one other target nonland permanent to its owner's hand. Then each opponent discards a card. -- III - Exile this Saga, then return it to the battlefield transformed under your control. +mana={1}{W}{U}{B}{R}{G} +type=Enchantment +subtype=Saga +[/card] +[card] name=The Kenriths' Royal Funeral auto=if type(creature[legendary]|mygraveyard)~morethan~0 then choice name(Don't exile any legendary creature) name(Don't exile any legendary creature) donothing auto=if type(creature[legendary]|mygraveyard)~morethan~0 then choice name(Exile 1 legendary creature) name(Exile 1 legendary creature) all(this) transforms((,newability[lord(*[legendary]|mycastingzone) changecost(colorless:-1)],newability[name(Exile legendary creature) target(creature[legendary]|mygraveyard) moveto(exile) and!( transforms((,newability[draw:manacost controller],newability[life:-manacost controller])) forever )!])) forever @@ -93507,7 +94025,7 @@ auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=ability$!name(Choose a creature) name(Choose a creature) target(creature|mybattlefield) transforms((,newability[choice name(Sacrifice) sacrifice],newability[if type(*|myhand)~morethan~0 then choice name(Discard a card) name(Discard a card) reject notatarget(*|myhand)])) ueot!$ opponent auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) ability$!name(Choose a creature) name(Choose a creature) target(creature|mybattlefield) transforms((,newability[choice name(Sacrifice) sacrifice],newability[if type(*|myhand)~morethan~0 then choice name(Discard a card) name(Discard a card) reject notatarget(*|myhand)])) ueot!$ opponent -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! text=(As this Saga enters and after your draw step, add a lore counter.) -- I, II - Each opponent sacrifices a creature unless they discard a card. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={3}{B} type=Enchantment @@ -93578,7 +94096,7 @@ auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=_LOOT_ auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}<=2) _LOOT_ -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Creature) )! asSorcery +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Creature) )! asSorcery text=(As this Saga enters and after your draw step, add a lore counter.) -- I, II - Draw a card, then discard a card. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={1}{U} type=Enchantment @@ -93717,6 +94235,21 @@ type=Legendary Artifact subtype=Equipment [/card] [card] +name=The Restoration of Eiganjo +backside=Architect of Restoration +restriction=compare(isflipped)~equalto~0 +anyzone={0}:doubleside(backside) +auto=counter(0/0,1,Lore) +auto=@each my firstmain:counter(0/0,1,Lore) +auto=name(Search basic plains) target(plains[basic]|mylibrary) moveto(myhand) and!( shuffle )! +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) may name(Discard and return) name(Discard and return) target(*|myhand) reject and!( transforms((,newability[name(Return permanent) target(*[-instant&-sorcery&manacost<=2]|mygraveyard) moveto(mybattlefield) and!( tap(noevent) )!])) oneshot )! +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Search your library for a basic Plains card, reveal it, put it into your hand, then shuffle. -- II - You may discard a card. When you do, return target permanent card with mana value 2 or less from your graveyard to the battlefield tapped. -- III - Exile this Saga, then return it to the battlefield transformed under your control. +mana={2}{W} +type=Enchantment +subtype=Saga +[/card] +[card] name=The Ringhart Crest auto=chooseatype transforms((,newability[this(variable{type:creature[legendary;chosentype]:myrestrictedcastingzone}>0) {T}:add{W}],newability[this(variable{type:creature[legendary;chosentype]:myrestrictedcastingzone}>0) {T}:add{U}],newability[this(variable{type:creature[legendary;chosentype]:myrestrictedcastingzone}>0) {T}:add{R}],newability[this(variable{type:creature[legendary;chosentype]:myrestrictedcastingzone}>0) {T}:add{G}],newability[this(variable{type:creature[legendary;chosentype]:myrestrictedcastingzone}>0) {T}:add{B}])) chooseend text=As The Ringhart Crest enters the battlefield, choose a creature type. -- {T}: Add {G}. Spend this mana only to cast a creature spell of the chosen type or a legendary creature spell. // {2}{G}{G} Kolvori, God of Kinship @@ -93771,7 +94304,7 @@ auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=target(creature) moveto(mybattlefield) and!(transforms((,newability[untap],newability[haste],newability[phaseaction[endofturn sourceinplay] moveTo(previousbattlefield)])) ueot)! auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}<=2) all(other creature|myBattlefield) 1/0 -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Creature) )! asSorcery +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Creature) )! asSorcery text=(As this Saga enters and after your draw step, add a lore counter.) -- I - Gain control of target creature until end of turn. Untap it. It gains haste until end of turn. -- II - Creatures you control get +1/+0 until end of turn. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={4}{R} type=Enchantment @@ -96134,6 +96667,14 @@ mana={B} type=Instant [/card] [card] +name=Touch the Spirit Realm +auto=may name(Exile a creature or artifact) target(*[artifact;creature]|battlefield) (blink)forsrc +autohand={1}{W}{discard}:name(Discard and exile) target(*[artifact;creature]|battlefield) moveto(exile) and!( transforms((,newability[phaseaction[endofturn once checkex] moveto(ownerbattlefield)])) ueot )! +text=When Touch the Spirit Realm enters the battlefield, exile up to one target artifact or creature until Touch the Spirit Realm leaves the battlefield. -- Channel - {1}{W}, Discard Touch the Spirit Realm: Exile target artifact or creature. Return it to the battlefield under its owner's control at the beginning of the next end step. +mana={2}{W} +type=Enchantment +[/card] +[card] name=Tourach's Canticle auto=name(Discard a card) target(*|opponenthand) transforms((,newability[reject],newability[discard:1 controller])) forever text=Target opponent reveals their hand. You choose a card from it. That player discards that card, then discards a card at random. @@ -96243,6 +96784,21 @@ power=4 toughness=4 [/card] [card] +name=Towashi Guide-Bot +auto=name(Put 1/1 counter) target(creature|myBattlefield) counter(1/1) +auto=this(variable{type:creature[modified]:mybattlefield}=0) {4}{T}:name(Draw a card) name(Draw a card) draw:1 controller +auto=this(variable{type:creature[modified]:mybattlefield}=1) {3}{T}:name(Draw a card) name(Draw a card) draw:1 controller +auto=this(variable{type:creature[modified]:mybattlefield}=2) {2}{T}:name(Draw a card) name(Draw a card) draw:1 controller +auto=this(variable{type:creature[modified]:mybattlefield}=3) {1}{T}:name(Draw a card) name(Draw a card) draw:1 controller +auto=this(variable{type:creature[modified]:mybattlefield}>=4) {T}:name(Draw a card) name(Draw a card) draw:1 controller +text=When Towashi Guide-Bot enters the battlefield, put a +1/+1 counter on target creature you control. -- {4}, {T}: Draw a card. This ability costs {1} less to activate for each modified creature you control. (Equipment, Auras you control, and counters are modifications.) +mana={4} +type=Artifact Creature +subtype=Construct +power=2 +toughness=1 +[/card] +[card] name=Towashi Songshaper auto=@movedTo(other artifact|myBattlefield):1/0 ueot text=Whenever another artifact enters the battlefield under your control, Towashi Songshaper gets +1/+0 until end of turn. @@ -96900,7 +97456,7 @@ auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=name(Create a rat) token(Rat Rogue,Creature Rat Rogue,1/1,black) opponent auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) name(Create a rat) token(Rat Rogue,Creature Rat Rogue,1/1,black) opponent -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! +auto=@counteradded(0/0,1,Lore) from(this) turnlimited:this(counter{0/0.3.Lore}) moveto(exile) and!( flip(backside) forcetype(Enchantment Creature) )! text=(As this Saga enters and after your draw step, add a lore counter.) -- I, II - Each opponent creates a 1/1 black Rat Rogue creature token. -- III - Exile this Saga, then return it to the battlefield transformed under your control. mana={1}{B} type=Enchantment @@ -100481,6 +101037,20 @@ power=2 toughness=1 [/card] [card] +name=Vessel of the All-Consuming +abilities=trample +auto=@damaged(player) from(this):name(Put 1/1 counter) counter(1/1) +auto=@damaged(*|battlefield) from(this):name(Put 1/1 counter) counter(1/1) +auto=@damageof(player) from(this) restriction{compare(thatmuch)~morethan~9}:name(You lose the game) name(You lose the game) wingame opponent +auto=@damagefoeof(player) from(this) restriction{compare(thatmuch)~morethan~9}:name(Opponent loses the game) name(Opponent loses the game) wingame controller +text=Trample -- Whenever Vessel of the All-Consuming deals damage, put a +1/+1 counter on it. -- Whenever Vessel of the All-Consuming deals damage to a player, if it has dealt 10 or more damage to that player this turn, they lose the game. +color=black,red +type=Enchantment Creature +subtype=Ogre Shaman +power=3 +toughness=3 +[/card] +[card] name=Vesuvan Drifter abilities=flying,showfromtoplibrary aicode=activate transforms((,newability[all(creature[zpos=1]|mylibrary) copy and!( all(this) transforms((,newability[flying],newability[phaseaction[endofturn once] flip(Vesuvan Drifter) undocpy])) ueot )!])) oneshot @@ -101114,6 +101684,17 @@ power=3 toughness=3 [/card] [card] +name=Vision of the Unspeakable +abilities=flying,trample +auto=foreach(*|myhand) 1/1 +text=Flying, trample -- Vision of the Unspeakable gets +1/+1 for each card in your hand. +color=blue +type=Enchantment Creature +subtype=Spirit +power=0 +toughness=0 +[/card] +[card] name=Visions target=player aicode=activate all(*[zpos<=5]|targetedpersonslibrary) bottomoflibrary and!( shuffle targetedplayer )! @@ -102225,6 +102806,18 @@ mana={B}{B} type=Sorcery [/card] [card] +name=Walking Skyscraper +abilities=trample +anyzone=foreach(creature[modified]|myBattlefield) altercost(colorless,-1) +auto=this(cantargetcard(*[-tapped]) opponentshroud +text=This spell costs {1} less to cast for each modified creature you control. (Equipment, Auras you control, and counters are modifications.) -- Trample -- Walking Skyscraper has hexproof as long as it's untapped. (It can't be the target of spells or abilities your opponents control.) +mana={8} +type=Artifact Creature +subtype=Construct +power=8 +toughness=8 +[/card] +[card] name=Wall of Corpses abilities=defender auto={B}{S}:if type(Wall of Corpses[blocking]|mybattlefield)~morethan~0 then destroy target(creature[blocked]|opponentbattlefield) diff --git a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt index d2cdfc101..04a043bac 100644 --- a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt +++ b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt @@ -1,6 +1,6 @@ #Planeswalkers Primitives Pack for Wagic the Homebrew. #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#We sorted this in alphabetical order - Luruz & Vitty85 18-06-2023 +#We sorted this in alphabetical order - Luruz & Vitty85 21-06-2023 [card] name=Abian, Luvion Usurper auto=counter(0/0,5,loyalty) @@ -2963,6 +2963,40 @@ type=Legendary Planeswalker subtype=Tamiyo [/card] [card] +name=Tamiyo, Compleated Sage +auto=ifnot paid(alternative) then counter(0/0,5,loyalty) +auto=if paid(alternative) then counter(0/0,3,loyalty) +auto={C(0/0,+1,Loyalty)}:name(+1: Tap artifact or creature) target(*[artifact;creature]|battlefield) freeze +auto={C(0/0,+1,Loyalty)}:name(+1: Don't tap anything) donothing +auto={C(0/0,0,Loyalty)}:name(0: Exile and copy with cost 0) target(*[-land&manacost=0]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-1,Loyalty)}:name(-1: Exile and copy with cost 1) target(*[-land&manacost=1]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-2,Loyalty)}:name(-2: Exile and copy with cost 2) target(*[-land&manacost=2]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-3,Loyalty)}:name(-3: Exile and copy with cost 3) target(*[-land&manacost=3]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-4,Loyalty)}:name(-4: Exile and copy with cost 4) target(*[-land&manacost=4]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-5,Loyalty)}:name(-5: Exile and copy with cost 5) target(*[-land&manacost=5]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-6,Loyalty)}:name(-6: Exile and copy with cost 6) target(*[-land&manacost=6]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-7,Loyalty)}:name(-7: Exile and copy with cost 7) target(*[-land&manacost=7]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-8,Loyalty)}:name(-8: Exile and copy with cost 8) target(*[-land&manacost=8]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-9,Loyalty)}:name(-9: Exile and copy with cost 9) target(*[-land&manacost=9]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-10,Loyalty)}:name(-10: Exile and copy with cost 10) target(*[-land&manacost=10]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-11,Loyalty)}:name(-11: Exile and copy with cost 11) target(*[-land&manacost=11]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-12,Loyalty)}:name(-12: Exile and copy with cost 12) target(*[-land&manacost=12]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-13,Loyalty)}:name(-13: Exile and copy with cost 13) target(*[-land&manacost=13]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-14,Loyalty)}:name(-14: Exile and copy with cost 14) target(*[-land&manacost=14]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-15,Loyalty)}:name(-15: Exile and copy with cost 15) target(*[-land&manacost=15]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-16,Loyalty)}:name(-16: Exile and copy with cost 16) target(*[-land&manacost=16]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-17,Loyalty)}:name(-17: Exile and copy with cost 17) target(*[-land&manacost=17]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-18,Loyalty)}:name(-18: Exile and copy with cost 18) target(*[-land&manacost=18]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-19,Loyalty)}:name(-19: Exile and copy with cost 19) target(*[-land&manacost=19]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-20,Loyalty)}:name(-20: Exile and copy with cost 20) target(*[-land&manacost=20]|mygraveyard) moveto(myexile) and!( clone )! +auto={C(0/0,-7,Loyalty)}:name(-7: Create tamiyo's notebook) token(Tamiyo's Notebook) +text=Compleated ({G/U/P} can be paid with {G}, {U}, or 2 life. If life was paid, this planeswalker enters with two fewer loyalty counters.) -- [+1]: Tap up to one target artifact or creature. It doesn't untap during its controller's next untap step. -- [-X]: Exile target nonland permanent card with mana value X from your graveyard. Create a token that's a copy of that card. -- [-7]: Create Tamiyo's Notebook, a legendary colorless artifact token with "Spells you cast cost {2} less to cast" and "{T}: Draw a card." +mana={2}{G}{GU}{U} +other={2}{G}{U}{L:2} name(Pay 2 life) +type=Legendary Planeswalker +subtype=Tamiyo +[/card] +[card] name=Tamiyo, Field Researcher auto=counter(0/0,4,loyalty) auto={C(0/0,1,Loyalty)}:name(+1: Creatures deal damage causes to draw a card) target(creature) transforms((,newability[@combatdamaged(player) from(this):draw:1 controller])) uynt oneshot diff --git a/projects/mtg/bin/Res/sets/primitives/unsupported.txt b/projects/mtg/bin/Res/sets/primitives/unsupported.txt index 59644dd04..b581a1f2f 100644 --- a/projects/mtg/bin/Res/sets/primitives/unsupported.txt +++ b/projects/mtg/bin/Res/sets/primitives/unsupported.txt @@ -2,7 +2,7 @@ grade=unsupported #The cards in this file are not implemented/incomplete yet. #Updated Card lists not in primitives (Borderline, Crappy, Unsupported and Missing Cards) #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#I sorted this programatically - Vitty85 19-06-2023 +#I sorted this programatically - Vitty85 21-06-2023 [card] name="Ach! Hans, Run!" text=At the beginning of your upkeep, you may say "Ach Hans, run It's the . . ." and name a creature card. If you do, search your library for the named card, put it into play, then shuffle your library. That creature has haste. Remove it from the game at end of turn. @@ -11899,6 +11899,16 @@ power=2 toughness=5 [/card] [card] +name=Weaver of Harmony +auto=lord(other creature[enchantment]|myBattlefield) 1/1 +text=Other enchantment creatures you control get +1/+1. -- {G}, {T}: Copy target activated or triggered ability you control from an enchantment source. You may choose new targets for the copy. (Mana abilities can't be targeted.) +mana={1}{G} +type=Enchantment Creature +subtype=Snake Druid +power=2 +toughness=2 +[/card] +[card] name=Weaver of Lies facedown={3} autofacedown={4}{U}:morph diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 8065c1233..e84ee074d 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -1850,6 +1850,7 @@ class AARemoveSingleCounter: public ActivatedAbility { public: int nb; + bool allcounters; AARemoveSingleCounter(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target, ManaCost * cost = NULL, int nb = 1); int resolve(); const string getMenuText(); diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index da76f3297..426863a3f 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -2913,6 +2913,7 @@ AARemoveSingleCounter::AARemoveSingleCounter(GameObserver* observer, int id, MTG ActivatedAbility(observer, id, source, cost, 0), nb(nb) { this->GetId(); + allcounters = false; } int AARemoveSingleCounter::resolve() @@ -2949,15 +2950,25 @@ int AARemoveSingleCounter::resolve() for(size_t i = 0; i < counters->counters.size(); ++i) { Counter * counter = counters->counters[i]; - MTGAbility * a = NEW AACounter(game, game->mLayers->actionLayer()->getMaxId(), source, cTarget,"", counter->name.c_str(), counter->power, counter->toughness, -nb, 0); + MTGAbility * a = NEW AACounter(game, game->mLayers->actionLayer()->getMaxId(), source, cTarget, "", counter->name.c_str(), counter->power, counter->toughness, -nb, 0); a->oneShot = true; pcounters.push_back(a); } } if(pcounters.size()) { - MTGAbility * a = NEW MenuAbility(game, this->GetId(), target, source, true, pcounters); - a->resolve(); + if(allcounters) + { + for(size_t j = 0; j < pcounters.size(); j++) + { + pcounters[j]->resolve(); + } + } + else + { + MTGAbility * a = NEW MenuAbility(game, this->GetId(), target, source, true, pcounters); + a->resolve(); + } } return 1; @@ -3034,9 +3045,9 @@ int AADuplicateCounters::resolve() Counter * counter = counters->counters[i]; MTGAbility * a = NULL; if(single) - a = NEW AACounter(game, game->mLayers->actionLayer()->getMaxId(), source, cTarget,"", counter->name.c_str(), counter->power, counter->toughness, 1, 0); + a = NEW AACounter(game, game->mLayers->actionLayer()->getMaxId(), source, cTarget, "", counter->name.c_str(), counter->power, counter->toughness, 1, 0); else - a = NEW AACounter(game, game->mLayers->actionLayer()->getMaxId(), source, cTarget,"", counter->name.c_str(), counter->power, counter->toughness, counter->nb, 0); + a = NEW AACounter(game, game->mLayers->actionLayer()->getMaxId(), source, cTarget, "", counter->name.c_str(), counter->power, counter->toughness, counter->nb, 0); a->oneShot = true; pcounters.push_back(a); } @@ -3045,10 +3056,10 @@ int AADuplicateCounters::resolve() { if(allcounters) { - for(size_t j = 0; j < pcounters.size(); j++) - { - pcounters[j]->resolve(); - } + for(size_t j = 0; j < pcounters.size(); j++) + { + pcounters[j]->resolve(); + } } else { @@ -3119,7 +3130,7 @@ int AAProliferate::resolve() for(size_t i = 0; i < counters->counters.size(); ++i) { Counter * counter = counters->counters[i]; - MTGAbility * a = NEW AACounter(game, game->mLayers->actionLayer()->getMaxId(), source, cTarget,"", counter->name.c_str(), counter->power, counter->toughness, 1, 0); + MTGAbility * a = NEW AACounter(game, game->mLayers->actionLayer()->getMaxId(), source, cTarget, "", counter->name.c_str(), counter->power, counter->toughness, 1, 0); a->oneShot = true; pcounters.push_back(a); } diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index 4cafeacb8..ee7672128 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -4851,12 +4851,24 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG if (splitRemoveSpecificCounters.size()) { int nb = 0; - WParsedInt* parser = NEW WParsedInt(splitRemoveSpecificCounters[1], card); + bool allcounters = false; + string counterString = splitRemoveSpecificCounters[1]; + if(counterString.find("all") != string::npos){ + allcounters = true; + size_t pos = counterString.find(",all"); + if(pos != string::npos) + counterString.replace(pos, 4, ""); + pos = counterString.find("all,"); + if(pos != string::npos) + counterString.replace(pos, 4, ""); + } + WParsedInt* parser = NEW WParsedInt(counterString, card); if(parser){ nb = parser->intValue; SAFE_DELETE(parser); } MTGAbility * a = NEW AARemoveSingleCounter(observer, id, card, target, NULL, nb); + ((AARemoveSingleCounter*)a)->allcounters = allcounters; a->oneShot = 1; a->canBeInterrupted = false; return a;