diff --git a/projects/mtg/bin/Res/missing_cards_by_sets/J22.txt b/projects/mtg/bin/Res/missing_cards_by_sets/J22.txt index 261dd5722..3e37b1000 100644 --- a/projects/mtg/bin/Res/missing_cards_by_sets/J22.txt +++ b/projects/mtg/bin/Res/missing_cards_by_sets/J22.txt @@ -58,6 +58,16 @@ type=Enchantment subtype=Aura [/card] [card] +name=Agrus Kos, Eternal Soldier +abilities=vigilance +text=Vigilance -- Whenever Agrus Kos, Eternal Soldier becomes the target of an ability that targets only it, you may pay {1}{R/W}. If you do, copy that ability for each other creature you control that ability could target. Each copy targets a different one of those creatures. ({R/W} can be paid with either {R} or {W}.) +mana={3}{W} +type=Legendary Creature +subtype=Spirit Soldier +power=3 +toughness=4 +[/card] +[card] name=Panharmonicon text=If an artifact or creature entering the battlefield causes a triggered ability of a permanent you control to trigger, that ability triggers an additional time. mana={4} 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 eb9fca7a8..2aa3de279 100644 --- a/projects/mtg/bin/Res/missing_cards_by_sets/missingCardList.txt +++ b/projects/mtg/bin/Res/missing_cards_by_sets/missingCardList.txt @@ -2,13 +2,6 @@ Primal Command Rowan Kenrith Pyre-Sledge Arsonist Sokenzan Smelter -Mizzix, Replica Rider -Ogre Battlecaster -Benevolent Hydra -Kibo, Uktabi Prince -Runadi, Behemoth Caller -Alandra, Sky Dreamer -Agrus Kos, Eternal Soldier Star Pupil Sun Droplet Elesh Norn, Mother of Machines @@ -24,7 +17,6 @@ The Seedcore Goliath Hatchery Mirrex Kinzu of the Bleak Coven -Serum Snare Red Sun's Twilight Urabrask's Forge Green Sun's Twilight @@ -93,7 +85,6 @@ Atraxa's Skitterfang Viral Spawning Venomous Brutalizer Cinderslash Ravager -Anoint with Affliction Hall of the Bandit Lord Boseiju, Who Shelters All Chief Engineer @@ -488,7 +479,6 @@ Teachings of the Kirin Go-Shintai of Lost Wisdom Invoke the Ancients Thundering Raiju -Takenuma, Abandoned Mire The Dragon-Kami Reborn Kami of Transience Kodama of the West Tree @@ -507,7 +497,6 @@ Mech Hangar Explosive Singularity Anchor to Reality Peerless Samurai -Eiganjo, Seat of the Empire Moon-Circuit Hacker Invoke Calamity Futurist Operative @@ -515,17 +504,14 @@ Covert Technician Goro-Goro, Disciple of Ryusei Biting-Palm Ninja Scrap Welder -Sokenzan, Crucible of Defiance March of Reckless Joy Discover the Impossible Seismic Wave Behold the Unspeakable Roadside Reliquary Awakened Awareness -Otawara, Soaring City Heiko Yamazaki, the General Invoke Despair -Boseiju, Who Endures Touch the Spirit Realm Kumano Faces Kakkazan Walking Skyscraper diff --git a/projects/mtg/bin/Res/sets/primitives/_macros.txt b/projects/mtg/bin/Res/sets/primitives/_macros.txt index 0c81913e8..14b08c275 100644 --- a/projects/mtg/bin/Res/sets/primitives/_macros.txt +++ b/projects/mtg/bin/Res/sets/primitives/_macros.txt @@ -101,9 +101,6 @@ # Recover #AUTO_DEFINE _RECOVER_($cost) @movedTo(creature|myGraveyard) from(Battlefield):may pay{$cost} name(Return to owner Hand) moveTo(ownerHand) all(this) donothing?moveTo(exile) all(this) -# Clash, not implemented -#AUTO_DEFINE _CLASH_ Put here a code if compare the casting cost based on Erratic Explosion. Meaby it would work with a few fix - # Proliferate #AUTO_DEFINE _PROLIFERATE_ name(Proliferate) notatarget(proliferation) proliferate diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index 40588417f..c43f4e49d 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 12-06-2023 +#I sorted this programmatically - Thanks to Vitty85 13-06-2023 [card] name=+2 Mace auto={3}:equip @@ -1403,6 +1403,17 @@ mana={10} type=Artifact [/card] [card] +name=Alandra, Sky Dreamer +auto=_SECOND_DRAW_ name(Create drake) name(Create drake) token(Drake, Creature Drake,2/2,blue,flying) +auto=@drawof(player) restriction{compare(pdrewcount)~equalto~5}:name(Gain X/X) name(Gain X/X) transforms((,newability[phandcount/phandcount])) ueot +text=Whenever you draw your second card each turn, create a 2/2 blue Drake creature token with flying. -- Whenever you draw your fifth card each turn, Alandra, Sky Dreamer and Drakes you control each get +X/+X until end of turn, where X is the number of cards in your hand. +mana={2}{U}{U} +type=Legendary Creature +subtype=Merfolk Wizard +power=2 +toughness=4 +[/card] +[card] name=Alaundo the Seer auto={T}:name(Draw and exile) all(*[zpos=1]|mylibrary) moveto(myhand) and!( transforms((,newability[name(Exile a card) target(*|myhand) moveto(myexile) and!( transforms((,newability[counter(0/0.manacost.Time)],newability[name(Remove time counter) name(Remove time counter) all(other *[counter{0/0.1.Time}]|myexile) counter(0/0.-1.Time)],newability[@counterremoved(0/0.1.Time) from(this|myexile) restriction{compare(hascnttime)~equalto~0}:may name(Cast from exile) name(Cast from exile) all(this|mygraveyard) moveto(myexile) and!( if cantargetcard(*[-creature]|*) then activate castcard(normal) else moveto(myBattlefield) and!( transforms((,newability[haste])) ueot )! )!])) forever]))) forever )! text={T}: Draw a card, then exile a card from your hand and put a number of time counters on it equal to its mana value. It gains "When the last time counter is removed from this card, if it's exiled, you may cast it without paying its mana cost. If you cast a creature spell this way, it gains haste until end of turn." Then remove a time counter from each other card you own in exile. @@ -2747,6 +2758,14 @@ power=6 toughness=5 [/card] [card] +name=Anoint with Affliction +target=creature|battlefield +auto=transforms((,newability[if compare(poisoncount)~morethan~2 then moveto(myexile)],newability[if compare(opponentpoisoncount)~lessthan~3 then if cantargetcard(*[manacost<=3]|*) then moveto(myxile)])) ueot +text=Exile target creature if it has mana value 3 or less. -- Corrupted - Exile that creature instead if its controller has three or more poison counters. +mana={1}{B} +type=Instant +[/card] +[card] name=Anointed Chorister abilities=lifelink auto={4}{W}:3/3 ueot @@ -57967,6 +57986,18 @@ power=3 toughness=2 [/card] [card] +name=Mizzix, Replica Rider +abilities=flying +auto=@movedTo(*[-instant;-sorcery]|mystack) from(mybattlefield,mycommandzone,mylibrary,mygraveyard,myexile,mysideboard,myreveal):name(Pay and copy) all(trigger[to]<1>) transforms((,newability[pay[[{1}{UR}]] name(Pay and copy) name(Pay and copy) clone with(haste^treason)])) forever +auto=@movedTo(*[instant;sorcery]|mystack) from(mybattlefield,mycommandzone,mylibrary,mygraveyard,myexile,mysideboard,myreveal):name(Pay and copy) all(trigger[to]<1>) transforms((,newability[pay[[{1}{UR}]] name(Pay and copy) activate name(Pay and copy) castcard(copied noevent)])) forever +text=Flying -- Whenever you cast a spell from anywhere other than your hand, you may pay {1}{U/R}. If you do, copy that spell and you may choose new targets for the copy. If the copy is a permanent spell, it gains haste and "At the beginning of your end step, sacrifice this permanent." (A copy of a permanent spell becomes a token.) +mana={4}{R} +type=Legendary Creature +subtype=Goblin Wizard +power=4 +toughness=5 +[/card] +[card] name=Mizzix's Mastery target=*[instant;sorcery]|mygraveyard abilities=overload @@ -62546,6 +62577,40 @@ power=3 toughness=3 [/card] [card] +name=Ogre Battlecaster +abilities=first strike +auto=_ATTACKING_may name(Can cast instant or sorcery) target(*[instant;sorcery]|mygraveyard) transforms((,newability[this(variable{hascntogrecasted}>0)while changecost(red:2)],newability[counter(0/0.1.OgreCasted) notrg],newability[phaseaction[my combatends once sourceinplay] counter(0/0.-hascntogrecasted.OgreCasted) notrg])) ueot +auto=lord(*[counter{0/0.1.OgreCasted}]|mygraveyard) canplayfromgraveyard +auto=lord(*[counter{0/0.1.OgreCasted}]|mygraveyard) gainedexiledeath +auto=lord(*[counter{0/0.1.OgreCasted}]|mygraveyard) asflash +auto=@movedto(*[manacost=1&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 1/0) name(Ogre gets 1/0) 1/0 ueot +auto=@movedto(*[manacost=2&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 2/0) name(Ogre gets 2/0) 2/0 ueot +auto=@movedto(*[manacost=3&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 3/0) name(Ogre gets 3/0) 3/0 ueot +auto=@movedto(*[manacost=4&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 4/0) name(Ogre gets 4/0) 4/0 ueot +auto=@movedto(*[manacost=5&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 5/0) name(Ogre gets 5/0) 5/0 ueot +auto=@movedto(*[manacost=6&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 6/0) name(Ogre gets 6/0) 6/0 ueot +auto=@movedto(*[manacost=7&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 7/0) name(Ogre gets 7/0) 7/0 ueot +auto=@movedto(*[manacost=8&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 8/0) name(Ogre gets 8/0) 8/0 ueot +auto=@movedto(*[manacost=9&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 9/0) name(Ogre gets 9/0) 9/0 ueot +auto=@movedto(*[manacost=10&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 10/0) name(Ogre gets 10/0) 10/0 ueot +auto=@movedto(*[manacost=11&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 11/0) name(Ogre gets 11/0) 11/0 ueot +auto=@movedto(*[manacost=12&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 12/0) name(Ogre gets 11/0) 12/0 ueot +auto=@movedto(*[manacost=13&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 13/0) name(Ogre gets 13/0) 13/0 ueot +auto=@movedto(*[manacost=14&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 14/0) name(Ogre gets 14/0) 14/0 ueot +auto=@movedto(*[manacost=15&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 15/0) name(Ogre gets 15/0) 15/0 ueot +auto=@movedto(*[manacost=16&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 16/0) name(Ogre gets 16/0) 16/0 ueot +auto=@movedto(*[manacost=17&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 17/0) name(Ogre gets 17/0) 17/0 ueot +auto=@movedto(*[manacost=18&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 18/0) name(Ogre gets 18/0) 18/0 ueot +auto=@movedto(*[manacost=19&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 19/0) name(Ogre gets 19/0) 19/0 ueot +auto=@movedto(*[manacost>=20&counter{0/0.1.OgreCasted}]|mystack) from(mygraveyard):may name(Ogre gets 20/0) name(Ogre gets 20/0) 20/0 ueot +text=First strike -- Whenever Ogre Battlecaster attacks, you may cast target instant or sorcery card from your graveyard by paying {R}{R} in addition to its other costs. If that spell would be put into a graveyard, exile it instead. When you cast that spell, Ogre Battlecaster gets +X/+0 until end of turn, where X is that spell's mana value. +mana={2}{R} +type=Creature +subtype=Ogre Shaman +power=3 +toughness=3 +[/card] +[card] name=Ogre Errant auto=_ATTACKING_target(other knight[attacking]) menace ueot text=Whenever Ogre Errant attacks, another target attacking Knight gains menace until end of turn. (It can't be blocked except by two or more creatures.) @@ -79151,6 +79216,15 @@ power=1 toughness=2 [/card] [card] +name=Serum Snare +target=*[-land]|battlefield +auto=moveTo(ownerHand) +auto=if cantargetcard(*[manacost<=3]|*) then _PROLIFERATE_ +text=Return target nonland permanent to its owner's hand. If that permanent had mana value 3 or less, proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) +mana={1}{U} +type=Instant +[/card] +[card] name=Serum Sovereign abilities=flying auto=@movedTo(*[-creature]|mystack):counter(0/0,1,oil) diff --git a/projects/mtg/bin/Res/sets/primitives/unsupported.txt b/projects/mtg/bin/Res/sets/primitives/unsupported.txt index 8f31ad289..35f26fb9f 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 09-06-2023 +#I sorted this programatically - Vitty85 13-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. @@ -170,6 +170,16 @@ power=2 toughness=1 [/card] [card] +name=Agrus Kos, Eternal Soldier +abilities=vigilance +text=Vigilance -- Whenever Agrus Kos, Eternal Soldier becomes the target of an ability that targets only it, you may pay {1}{R/W}. If you do, copy that ability for each other creature you control that ability could target. Each copy targets a different one of those creatures. ({R/W} can be paid with either {R} or {W}.) +mana={3}{W} +type=Legendary Creature +subtype=Spirit Soldier +power=3 +toughness=4 +[/card] +[card] name=Agyrem text=Whenever a white creature dies, return it to the battlefield under its owner's control at the beginning of the next end step. -- Whenever a nonwhite creature dies, return it to its owner's hand at the beginning of the next end step. -- Whenever you roll {C}, creatures can't attack you until a player planeswalks. type=Plane