diff --git a/projects/mtg/CardImageLinks.csv b/projects/mtg/CardImageLinks.csv index 795555dbc..df2690c9f 100644 --- a/projects/mtg/CardImageLinks.csv +++ b/projects/mtg/CardImageLinks.csv @@ -28044,6 +28044,7 @@ LTR;112390t;https://cards.scryfall.io/large/front/f/6/f6df0025-8f6a-43e1-8f07-36 LTR;112416t;https://cards.scryfall.io/large/front/d/b/db598f33-2ff9-4e0b-a067-05fecc03435f.jpg LTR;112424t;https://cards.scryfall.io/large/front/4/6/46a2c363-c879-4c36-b08a-dd57e3da19ae.jpg LTR;112430t;https://cards.scryfall.io/large/front/e/4/e4b7e3b5-2f3c-4eb7-abc9-322a049a9e1a.jpg +LTR;111708t;https://cards.scryfall.io/large/front/b/b/bbd9ff58-4d38-4d34-9dfc-6f788830297e.jpg LTR;111714t;https://cards.scryfall.io/large/front/d/b/db598f33-2ff9-4e0b-a067-05fecc03435f.jpg LTR;111716t;https://cards.scryfall.io/large/front/e/4/e4b7e3b5-2f3c-4eb7-abc9-322a049a9e1a.jpg LTR;111504t;https://cards.scryfall.io/large/front/e/4/e4b7e3b5-2f3c-4eb7-abc9-322a049a9e1a.jpg diff --git a/projects/mtg/bin/Res/missing_cards_by_sets/C17.txt b/projects/mtg/bin/Res/missing_cards_by_sets/C17.txt index 951bfea7c..97d9cf620 100644 --- a/projects/mtg/bin/Res/missing_cards_by_sets/C17.txt +++ b/projects/mtg/bin/Res/missing_cards_by_sets/C17.txt @@ -23,15 +23,6 @@ power=2 toughness=2 [/card] [card] -name=Leonin Shikari -text=You may activate equip abilities any time you could cast an instant. -mana={1}{W} -type=Creature -subtype=Cat Soldier -power=2 -toughness=2 -[/card] -[card] name=Mairsil, the Pretender text=When Mairsil, the Pretender enters the battlefield, you may exile an artifact or creature card from your hand or graveyard and put a cage counter on it. -- Mairsil, the Pretender has all activated abilities of all cards you own in exile with cage counters on them. You may activate each of those abilities only once each turn. mana={1}{U}{B}{R} diff --git a/projects/mtg/bin/Res/missing_cards_by_sets/DST.txt b/projects/mtg/bin/Res/missing_cards_by_sets/DST.txt index b4e43a049..59d8dc66a 100644 --- a/projects/mtg/bin/Res/missing_cards_by_sets/DST.txt +++ b/projects/mtg/bin/Res/missing_cards_by_sets/DST.txt @@ -5,15 +5,6 @@ mana={3}{W}{W} type=Instant [/card] [card] -name=Leonin Shikari -text=You may activate equip abilities any time you could cast an instant. -mana={1}{W} -type=Creature -subtype=Cat Soldier -power=2 -toughness=2 -[/card] -[card] name=Surestrike Trident text=Equipped creature has first strike and "{T}, Unattach Surestrike Trident: This creature deals damage equal to its power to target player." -- Equip {4} ({4}: Attach to target creature you control. Equip only as a sorcery. This card enters the battlefield unattached and stays on the battlefield if the creature leaves.) mana={2} diff --git a/projects/mtg/bin/Res/missing_cards_by_sets/LTR.txt b/projects/mtg/bin/Res/missing_cards_by_sets/LTR.txt new file mode 100644 index 000000000..0a46cd36f --- /dev/null +++ b/projects/mtg/bin/Res/missing_cards_by_sets/LTR.txt @@ -0,0 +1,48 @@ +[card] +name=Sharkey, Tyrant of the Shire +text=Activated abilities of lands your opponents control can't be activated unless they're mana abilities. -- Sharkey, Tyrant of the Shire has all activated abilities of lands your opponents control except mana abilities. -- Mana of any type can be spent to activate Sharkey's abilities. +mana={2}{U}{B} +type=Legendary Creature +subtype=Avatar Rogue +power=2 +toughness=4 +[/card] +[card] +name=Goldberry, River-Daughter +text={T}: Move a counter of each kind not on Goldberry, River-Daughter from another target permanent you control onto Goldberry. -- {U}, {T}: Move one or more counters from Goldberry onto another target permanent you control. If you do, draw a card. +mana={1}{U} +type=Legendary Creature +subtype=Nymph +power=1 +toughness=3 +[/card] +[card] +name=Goldberry, River-Daughter +text={T}: Move a counter of each kind not on Goldberry, River-Daughter from another target permanent you control onto Goldberry. -- {U}, {T}: Move one or more counters from Goldberry onto another target permanent you control. If you do, draw a card. +mana={1}{U} +type=Legendary Creature +subtype=Nymph +power=1 +toughness=3 +[/card] +[card] +name=Palantir of Orthanc +text=At the beginning of your end step, put an influence counter on Palantir of Orthanc and scry 2. Then target opponent may have you draw a card. If that player doesn't, you mill X cards, where X is the number of influence counters on Palantir of Orthanc, and that player loses life equal to the total mana value of those cards. +mana={3} +type=Legendary Artifact +[/card] +[card] +name=Palantir of Orthanc +text=At the beginning of your end step, put an influence counter on Palantir of Orthanc and scry 2. Then target opponent may have you draw a card. If that player doesn't, you mill X cards, where X is the number of influence counters on Palantir of Orthanc, and that player loses life equal to the total mana value of those cards. +mana={3} +type=Legendary Artifact +[/card] +[card] +name=Sharkey, Tyrant of the Shire +text=Activated abilities of lands your opponents control can't be activated unless they're mana abilities. -- Sharkey, Tyrant of the Shire has all activated abilities of lands your opponents control except mana abilities. -- Mana of any type can be spent to activate Sharkey's abilities. +mana={2}{U}{B} +type=Legendary Creature +subtype=Avatar Rogue +power=2 +toughness=4 +[/card] diff --git a/projects/mtg/bin/Res/missing_cards_by_sets/MOC.txt b/projects/mtg/bin/Res/missing_cards_by_sets/MOC.txt index 92940a79a..d78b027fa 100644 --- a/projects/mtg/bin/Res/missing_cards_by_sets/MOC.txt +++ b/projects/mtg/bin/Res/missing_cards_by_sets/MOC.txt @@ -790,10 +790,7 @@ subtype=Theros [/card] [card] name=Paliano -auto=lord(other creature|myBattlefield) -auto=@chaos ensuescreate(assassin:creature assassin:1/1:black:deathtouch,haste) text=When one or more creatures you control deal combat damage to a player, if there is no monarch, you become the monarch. -- Whenever chaos ensues, create a 1/1 black Assassin creature token with deathtouch and haste. -mana=null type=Plane subtype=Fiora [/card] diff --git a/projects/mtg/bin/Res/missing_cards_by_sets/PSAL.txt b/projects/mtg/bin/Res/missing_cards_by_sets/PSAL.txt index b73b1149b..6864de09b 100644 --- a/projects/mtg/bin/Res/missing_cards_by_sets/PSAL.txt +++ b/projects/mtg/bin/Res/missing_cards_by_sets/PSAL.txt @@ -57,15 +57,6 @@ power=3 toughness=3 [/card] [card] -name=Leonin Shikari -text=You may activate equip abilities any time you could cast an instant. -mana={1}{W} -type=Creature -subtype=Cat Soldier -power=2 -toughness=2 -[/card] -[card] name=Nacatl War-Pride text=Nacatl War-Pride must be blocked by exactly one creature if able. -- Whenever Nacatl War-Pride attacks, put X tokens that are copies of Nacatl War-Pride onto the battlefield tapped and attacking, where X is the number of creatures defending player controls. Exile the tokens at the beginning of the next end step. mana={3}{G}{G}{G} diff --git a/projects/mtg/bin/Res/sets/LTR/_cards.dat b/projects/mtg/bin/Res/sets/LTR/_cards.dat index 326a02c21..f347faa18 100644 --- a/projects/mtg/bin/Res/sets/LTR/_cards.dat +++ b/projects/mtg/bin/Res/sets/LTR/_cards.dat @@ -2,7 +2,7 @@ author=Wagic Team name=The Lord of the Rings: Tales of Middle-earth year=2023-06-23 -total=554 +total=555 [/meta] [card] primitive=The Ring @@ -10,6 +10,11 @@ id=-999906 rarity=T [/card] [card] +primitive=Halfling +id=-111708 +rarity=T +[/card] +[card] primitive=Food id=-111914 rarity=T diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index e96ea1a41..7d01b67ff 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 03-07-2023 +#I sorted this programmatically - Thanks to Vitty85 04-07-2023 [card] name=+2 Mace auto={3}:equip @@ -4877,6 +4877,37 @@ mana={R} type=Sorcery [/card] [card] +name=Assault on Osgiliath +otherrestriction=type(army|mybattlefield)~morethan~0 +restriction=type(army|mybattlefield)~equalto~0 +other={X}{R}{R}{R} +auto=emblem transforms((,newability[lord(*[orc;goblin]|mybattlefield) double strike],newability[lord(*[orc;goblin]|mybattlefield) haste])) ueot +auto=if paid(alternative) then if compare(fullpaid)~equalto~1 then name(Put 1/1 counter) name(Put 1/1 counter) name(Put 1/1 counter) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~2 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.2)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~3 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.3)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~4 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.4)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~5 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.5)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~6 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.6)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~7 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.7)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~8 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.8)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~9 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.9)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~10 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.10)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~11 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.11)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~12 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.12)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~13 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.13)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~14 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.14)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~15 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.15)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~16 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.16)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~17 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.17)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~18 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.18)])) forever +auto=if paid(alternative) then if compare(fullpaid)~equalto~19 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.19)])) forever +auto=if paid(alternative) then if compare(fullpaid)~morethan~19 then name(Put 1/1 counters) name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Orc,newability[counter(1/1.20)])) forever +auto=ifnot paid(alternative) then name(Create Orc Army) name(Create Orc Army) token(Orc Army) and!( name(Put 1/1 counters) counter(1/1.fullpaid) notatarget(army|myBattlefield) )! +text=Amass Orcs X, then Goblins and Orcs you control gain double strike and haste until end of turn. (To amass Orcs X, put X +1/+1 counters on an Army you control. It's also an Orc. If you don't control an Army, create a 0/0 black Orc Army creature.) +mana={X}{R}{R}{R} +type=Sorcery +[/card] +[card] name=Assemble from Parts target=creature|mygraveyard auto=counter(0/0.1.PerpetualAssemble) notrg @@ -8148,6 +8179,17 @@ power=2 toughness=1 [/card] [card] +name=Bill the Pony +auto=name(Create foods) token(Food)*2 +auto={S(food|mybattlefield)}:name(Creature assign toughness damage) target(creature|myBattlefield) transforms((,newability[combattoughness])) ueot +text=When Bill the Pony enters the battlefield, create two Food tokens. (They're artifacts with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") -- Sacrifice a Food: Until end of turn, target creature you control assigns combat damage equal to its toughness rather than its power. +mana={3}{W} +type=Legendary Creature +subtype=Horse +power=1 +toughness=4 +[/card] +[card] name=Bind the Monster target=creature auto=tap(noevent) @@ -21248,6 +21290,15 @@ mana={1}{W} type=Enchantment [/card] [card] +name=Dawn of a New Age +auto=counter(0/0,type:creature:myBattlefield,Hope) +auto=@each my endofturn restriction{compare(hascnthope)~morethan~0}:name(Remove hope counter) counter(0/0,-1,Hope) && draw:1 controller && if compare(hascnthope)~equalto~0 then name(Sacrifice and gain life) name(Sacrifice and gain life) sacrifice and!( life:4 controller )! +auto=@each my endofturn restriction{compare(hascnthope)~equalto~0}:name(Sacrifice and gain life) sacrifice and!( life:4 controller )! +text=Dawn of a New Age enters the battlefield with a hope counter on it for each creature you control. -- At the beginning of your end step, remove a hope counter from Dawn of a New Age. If you do, draw a card. Then if Dawn of a New Age has no hope counters on it, sacrifice it and you gain 4 life. +mana={1}{W} +type=Enchantment +[/card] +[card] name=Dawn to Dusk target=enchantment auto=choice name(Destroy) destroy @@ -26728,6 +26779,18 @@ power=2 toughness=2 [/card] [card] +name=Eagles of the North +abilities=flying +autohand={1}{cycle}:name(Search plains) target(plains|mylibrary) moveto(myhand) and!( shuffle )! +auto=all(creature|myBattlefield) transforms((,newability[1/0],newability[first strike])) ueot +text=Flying -- When Eagles of the North enters the battlefield, creatures you control get +1/+0 and gain first strike until end of turn. -- Plainscycling {1} ({1}, Discard this card: Search your library for a Plains card, reveal it, put it into your hand, then shuffle.) +mana={5}{W} +type=Creature +subtype=Bird Soldier +power=3 +toughness=3 +[/card] +[card] name=Earth Tremor target=creature,planeswalker auto=damage:type:land:myBattlefield @@ -26852,6 +26915,16 @@ power=2 toughness=1 [/card] [card] +name=Eastfarthing Farmer +auto=name(Create food) token(Food) and!( name(Creature gains X/X) target(creature|myBattlefield) type:food:myBattlefield/type:food:myBattlefield ueot)! +text=When Eastfarthing Farmer enters the battlefield, create a Food token. When you do, target creature you control gets +1/+1 until end of turn for each Food you control. (A Food token is an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") +mana={2}{W} +type=Creature +subtype=Halfling Peasant +power=2 +toughness=3 +[/card] +[card] name=Easy Prey abilities=cycling target=creature[manacost<=2] @@ -27237,6 +27310,17 @@ mana={2} type=Artifact [/card] [card] +name=Elanor Gardner +auto=name(Create food) token(Food) +auto=@sacrificed(food|mybattlefield) turnlimited:name(Sacrificed food) transforms((,newability[@each my endofturn:name(Search basic land) name(Search basic land) target(land[basic]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[tap(noevent)],newability[shuffle])) oneshot )!])) ueot +text=When Elanor Gardner enters the battlefield, create a Food token. -- At the beginning of your end step, if you sacrificed a Food this turn, you may search your library for a basic land card, put that card onto the battlefield tapped, then shuffle. +mana={3}{G} +type=Legendary Creature +subtype=Halfling Scout +power=2 +toughness=4 +[/card] +[card] name=Elas il-Kor, Sadistic Pilgrim abilities=deathtouch auto=@movedTo(other creature|myBattlefield):life:1 @@ -28798,6 +28882,16 @@ power=3 toughness=4 [/card] [card] +name=Eowyn, Lady of Rohan +auto=@each my combatbegins:name(Choose a creature) target(creature|battlefield) transforms((,newability[if cantargetcard(*[geared]|*) then becomes(^^first strike^vigilance) ueot],newability[if cantargetcard(*[-geared]|*) then choice name(Gains first strike) name(Gains first strike) becomes(^^first strike) ueot],newability[if cantargetcard(*[-geared]|*) then choice name(Gains vigilance) name(Gains vigilance) becomes(^^vigilance) ueot])) ueot +text=At the beginning of combat on your turn, target creature gains your choice of first strike or vigilance until end of turn. If that creature is equipped, it gains first strike and vigilance until end of turn instead. -- Equip abilities you activate cost {1} less to activate. +mana={2}{W} +type=Legendary Creature +subtype=Human Noble +power=2 +toughness=4 +[/card] +[card] name=Ephara's Dispersal other={U} name(Target attacking creature) restriction=type(creature|battlefield)~morethan~0 @@ -31266,6 +31360,19 @@ mana={2}{R} type=Enchantment [/card] [card] +name=Fall of Gil-galad +auto=counter(0/0,1,Lore) +auto=@each my firstmain:counter(0/0,1,Lore) +auto=name(Scry 2) _SCRY2_ +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) name(Put 1/1 counters) name(Put 1/1 counters) target(creature|mybattlefield) counter(1/1,2) +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) target(creature|mybattlefield) transforms((,newability[_DIES_name(Draw 2 cards) draw:2 controller],newability[_DIES_may name(Fights another creature) target(other creature|battlefield) dynamicability])) ueot +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) sacrifice(this) +text=(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.) -- I - Scry 2. -- II - Put two +1/+1 counters on target creature you control. -- III - Until end of turn, target creature you control gains "When this creature dies, draw two cards." Then that creature fights up to one other target creature. +mana={1}{G} +type=Enchantment +subtype=Saga +[/card] +[card] name=Fall of the Impostor auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) @@ -33144,6 +33251,16 @@ mana={3}{R} type=Enchantment [/card] [card] +name=Fires of Mount Doom +auto=name(Damage creature) name(Damage creature) target(creature|opponentBattlefield) transforms((,newability[damage:2],newability[name(Destroy all equipments) all(myeqp) destroy])) oneshot +auto={2}{R}:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile ueot],newability[counter(0/0.1.FiresExiled) notrg])) ueot )! +auto=@movedto(*[counter{0/0.1.FiresExiled}]|mystack) from(myexile):name(Deals 2 damage) damage:2 opponent +auto=@each endofturn:name(Effect ends) all(*[counter{0/0.1.FiresExiled}]|myexile) transforms((,newability[counter(0/0.-hascntfiresexiled.FiresExiled) notrg])) oneshot +text=When Fires of Mount Doom enters the battlefield, it deals 2 damage to target creature an opponent controls. Destroy all Equipment attached to that creature. -- {2}{R}: Exile the top card of your library. You may play that card this turn. When you play a card this way, Fires of Mount Doom deals 2 damage to each player. +mana={2}{R} +type=Legendary Enchantment +[/card] +[card] name=Firesong and Sunspeaker auto=@damaged(creature) from(*[instant;sorcery;red]|mystack,mygraveyard):life:thatmuch controller auto=@damageof(player) from(*[instant;sorcery;red]|mystack,mygraveyard):life:thatmuch controller @@ -34384,6 +34501,15 @@ mana={1}{B} type=Sorcery [/card] [card] +name=Forge Anew +auto=name(Return equipment) target(equipment|mygraveyard) moveTo(mybattlefield) +auto=this(variable{controllerturn}>0) lord(equipment|mybattlefield) eqpasinst +auto=this(variable{controllerturn}>0) {0}:name(Equip first time) name(Equip first time) target(equipment|mybattlefield) transforms((,newability[name(Attach to creature) rehook target(creature|mybattlefield)])) oneshot limit:1 +text=When Forge Anew enters the battlefield, return target Equipment card from your graveyard to the battlefield. -- As long as it's your turn, you may activate equip abilities any time you could cast an instant. -- You may pay {0} rather than pay the equip cost of the first equip ability you activate during each of your turns. +mana={2}{W} +type=Enchantment +[/card] +[card] name=Forge Boss auto=@sacrificed(other creature|mybattlefield) turnlimited:damage:2 opponent text=Whenever you sacrifice one or more other creatures, Forge Boss deals 2 damage to each opponent. This ability triggers only once each turn. @@ -34954,6 +35080,29 @@ power=1 toughness=3 [/card] [card] +name=Frodo, Determined Hero +auto=may name(Attach equipment) target(equipment[manacost<=3]|mybattlefield) transforms((,newability[if cantargetcard(*[manacost>=2]|*) then rehook all(Frodo^ Determined Hero|mybattlefield)])) oneshot +auto=_ATTACKING_may name(Attach equipment) target(equipment[manacost<=3]|mybattlefield) transforms((,newability[if cantargetcard(*[manacost>=2]|*) then rehook all(Frodo^ Determined Hero|mybattlefield)])) oneshot +auto=this(variable{controllerturn}>0) transforms((,newability[preventalldamage to(this)])) +text=Whenever Frodo, Determined Hero enters the battlefield or attacks, you may attach target Equipment you control with mana value 2 or 3 to Frodo. -- As long as it's your turn, prevent all damage that would be dealt to Frodo. +mana={1}{W} +type=Legendary Creature +subtype=Halfling Warrior +power=2 +toughness=2 +[/card] +[card] +name=Frodo, Sauron's Bane +auto=this(cantargetcard(*[citizen&-scout]) {WB}{WB}:name(Becomes scout) name(Becomes scout) transforms((Scout,setpower=2,settoughness=3,newability[lifelink])) forever +auto=this(cantargetcard(*[scout&-rogue]) {B}{B}{B}:name(Becomes rogue) name(Becomes rogue) transforms((Rogue,newability[@combatdamaged(player) from(this) restriction{compare(pringtemptations)~lessthan~4}:name(The ring tempts you) name(The ring tempts you) ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller],newability[@combatdamagefoeof(player) from(this) restriction{compare(pringtemptations)~morethan~3}:name(Player loses game) name(Player loses game) wingame controller],newability[@combatdamageof(player) from(this) restriction{compare(pringtemptations)~morethan~3}:name(Player loses game) name(Player loses game) wingame opponent])) forever +text={W/B}{W/B}: If Frodo, Sauron's Bane is a Citizen, it be comes a Halfling Scout with base power and toughness 2/3 and lifelink. -- {B}{B}{B}: If Frodo is a Scout, it becomes a Halfling Rogue with "Whenever this creature deals combat damage to a player, that player loses the game if the Ring has tempted you four or more times this game. Otherwise, the Ring tempts you." +mana={W} +type=Legendary Creature +subtype=Halfling Citizen +power=1 +toughness=2 +[/card] +[card] name=Froghemoth abilities=trample,haste auto=@combatdamaged(player) from(this):name(Exile cards) transforms((,newability[name(Exile cards) target(*|opponentgraveyard) moveto(exile) and!( all(this) counter(1/1) && if cantargetcard(*[-creature]|*) then life:1 controller )!])) oneshot @@ -35579,6 +35728,17 @@ power=3 toughness=3 [/card] [card] +name=Galadriel, Gift-Giver +auto=name(Choose one) transforms((,newability[if type(other creature|Battlefield)~morethan~0 then choice name(Put 1/1 counter) name(Put 1/1 counter) target(other creature|Battlefield) counter(1/1)],newability[choice name(Create food) token(Food)],newability[choice name(Create treasure) token(Treasure)])) oneshot +auto=_ATTACKING_name(Choose one) transforms((,newability[if type(other creature|Battlefield)~morethan~0 then choice name(Put 1/1 counter) name(Put 1/1 counter) target(other creature|Battlefield) counter(1/1)],newability[choice name(Create food) token(Food)],newability[choice name(Create treasure) token(Treasure)])) oneshot +text=Whenever Galadriel, Gift-Giver enters the battlefield or attacks, choose one -- Put a +1/+1 counter on another target creature. -- Create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") -- Create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") +mana={3}{G}{G} +type=Legendary Creature +subtype=Elf Noble +power=4 +toughness=4 +[/card] +[card] name=Galazeth Prismari abilities=flying auto=token(Treasure) @@ -37667,6 +37827,36 @@ type=Artifact subtype=Equipment [/card] [card] +name=Glamdring +auto=teach(creature) first strike +auto=teach(creature) pginstantsorcery/pginstantsorcery nonstatic +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~1}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=1]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=1]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=1]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=1]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~2}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=2]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=2]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=2]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=2]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~3}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=3]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=3]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=3]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=3]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~4}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=4]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=4]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=4]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=4]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~5}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=5]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=5]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=5]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=5]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~6}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=6]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=6]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=6]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=6]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~7}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=7]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=7]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=7]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=7]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~8}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=8]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=8]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=8]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=8]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~9}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=9]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=9]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=9]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=9]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~10}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=10]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=10]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=10]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=10]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~11}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=11]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=11]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=11]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=11]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~12}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=12]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=12]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=12]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=12]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~13}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=13]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=13]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=13]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=13]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~14}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=14]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=14]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=14]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=14]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~15}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=15]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=15]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=15]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=15]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~16}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=16]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=16]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=16]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=16]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~17}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=17]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=17]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=17]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=17]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~18}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=18]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=18]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=18]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=18]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~equalto~19}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=19]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=19]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=19]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=19]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto=@combatdamaged(player) from(mytgt) restriction{compare(thatmuch)~morethan~19}:name(Cast instant or sorcery) name(Cast instant or sorcery) transforms((,newability[if type(instant[manacost<=20]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=20]|myhand) activate castcard(normal)],newability[if type(sorcery[manacost<=20]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=20]|myhand) activate castcard(normal)],newability[choice name(Don't cast any spell) donothing])) ueot +auto={3}:equip +text=Equipped creature has first strike and gets +1/+0 for each instant and sorcery card in your graveyard. -- Whenever equipped creature deals combat damage to a player, you may cast an instant or sorcery spell from your hand with mana value less than or equal to that damage without paying its mana cost. -- Equip {3} +mana={2} +type=Legendary Artifact +subtype=Equipment +[/card] +[card] name=Glarecaster abilities=flying auto={5}{W}:transforms((,newability[undamageable],newability[_ENRAGE_damage:thatmuch target(player^creature)],newability[@damageof(player):life:thatmuch controller && damage:thatmuch target(player^creature)])) ueot @@ -39447,6 +39637,16 @@ power=3 toughness=1 [/card] [card] +name=Gollum, Scheming Guide +auto=_ATTACKING_name(Scry 2) scry:2 scrycore delayed transforms((,newability[choice name(Choose land) if compare(genrand2)~equalto~0 then removefromcombat ueot else draw:1 controller && becomes(^^unblockable) ueot],newability[choice name(Choose nonland) if compare(genrand2)~equalto~0 then removefromcombat ueot else draw:1 controller && becomes(^^unblockable) ueot])) ueot scrycoreend scryend +text=Whenever Gollum, Scheming Guide attacks, look at the top two cards of your library, put them back in any order, then choose land or nonland. An opponent guesses whether the top card of your library is the chosen kind. Reveal that card. If they guessed right, remove Gollum from combat. Otherwise, you draw a card and Gollum can't be blocked this turn. +mana={1}{B} +type=Legendary Creature +subtype=Halfling Horror +power=2 +toughness=1 +[/card] +[card] name=Golos, Tireless Pilgrim auto=may name(Search land) target(land|myLibrary) moveTo(myBattlefield) and!( transforms((,newability[tap(noevent)],newability[shuffle])) oneshot )! auto={2}{W}{U}{B}{R}{G}:name(Exile top 3 cards) all(*[zpos<=3]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile])) ueot )! @@ -50620,6 +50820,7 @@ toughness=4 [/card] [card] name=Kaheera, the Orphanguard +abilities=vigilance auto=lord(other Cat, Elemental, Nightmare, Dinosaur,Beast|myBattlefield) 1/1 auto=lord(other Cat, Elemental, Nightmare, Dinosaur,Beast|myBattlefield) vigilance text=Companion - Each creature card in your starting deck is a Cat, Elemental, Nightmare, Dinosaur, or Beast card. (If this card is your chosen companion, you may put it into your hand from outside the game for {3} any time you could cast a sorcery.) -- Vigilance -- Each other creature you control that's a Cat, Elemental, Nightmare, Dinosaur, or Beast gets +1/+1 and has vigilance. @@ -54658,6 +54859,17 @@ power=0 toughness=4 [/card] [card] +name=Lembas +aicode=activate transforms((,newability[draw:1 controller])) oneshot +auto=name(Scry 1 and draw) scry:1 scrycore delayed draw:1 controller scrycoreend scryend +auto={2}{T}{S}:name(Sacrifice and gain life) life:3 controller +auto=@movedto(this|graveyard) from(battlefield):name(Shuffle in library) all(trigger[to]) name(Shuffle in library) transforms((,newability[moveto(mylibrary) and!(shuffle)!])) oneshot +text=When Lembas enters the battlefield, scry 1, then draw a card. -- {2}, {T}, Sacrifice Lembas: You gain 3 life. -- When Lembas is put into a graveyard from the battlefield, its owner shuffles it into their library. +mana={2} +type=Artifact +subtype=Food +[/card] +[card] name=Lena, Selfless Champion auto=foreach(creature[-token]|mybattlefield) _SOLDIERTOKEN_ auto={S}:name(All creatures gain indestructible) all(other creature[power<=2]|myBattlefield) transforms((,newability[indestructible])) ueot @@ -54710,6 +54922,16 @@ power=2 toughness=1 [/card] [card] +name=Leonin Shikari +auto=lord(equipment|mybattlefield) eqpasinst +text=You may activate equip abilities any time you could cast an instant. +mana={1}{W} +type=Creature +subtype=Cat Soldier +power=2 +toughness=2 +[/card] +[card] name=Leonin Vanguard auto=@each my combatbegins:aslongas(creature|myBattlefield) 1/1 ueot && life:1 >2 text=At the beginning of combat on your turn, if you control three or more creatures, Leonin Vanguard gets +1/+1 until end of turn and you gain 1 life. @@ -56007,6 +56229,17 @@ type=Artifact subtype=Equipment [/card] [card] +name=Lobelia Sackville-Baggins +abilities=flash,menace +auto=name(Exile creature) target(creature[fresh]|opponentgraveyard) moveto(opponentexile) and!( transforms((,newability[token(Treasure)*power opponent])) oneshot )! +text=Flash -- Menace -- When Lobelia Sackville-Baggins enters the battlefield, exile target creature card from an opponent's graveyard that was put there from the battlefield this turn, then create X Treasure tokens, where X is the exiled card's power. +mana={2}{B} +type=Legendary Creature +subtype=Halfling Citizen +power=2 +toughness=3 +[/card] +[card] name=Loch Dragon abilities=flying auto=may ability$!name(discard) _DISCARD&DRAW_ !$ controller @@ -56105,6 +56338,18 @@ power=3 toughness=3 [/card] [card] +name=Long List of the Ents +auto=counter(0/0,1,Lore) +auto=@each my firstmain:counter(0/0,1,Lore) +auto=chooseatype transforms((,newability[@movedto(creature[chosentype]|mybattlefield) once:name(Put 1/1 counter) all(trigger[to]) name(Put 1/1 counter) counter(1/1)])) ueot chooseend +auto=@counteradded(0/0,1,Lore) from(this) restriction{compare(hascntlore)~lessthan~7}:name(Choose a creature type) name(Choose a creature type) transforms((,newability[chooseatype transforms((,newability[@movedto(creature[chosentype]|mybattlefield) once:name(Put 1/1 counter) all(trigger[to]) name(Put 1/1 counter) counter(1/1)])) ueot chooseend])) ueot +auto=@each my end restriction{compare(hascntlore)~equalto~6}:name(Sacrifice saga) sacrifice +text=(As this Saga enters and after your draw step, add a lore counter. Sacrifice after VI.) -- I, II, III, IV, V, VI - Note a creature type that hasn't been noted for Long List of the Ents. When you cast your next creature spell of that type this turn, that creature enters the battlefield with an additional +1/+1 counter on it. +mana={G} +type=Enchantment +subtype=Saga +[/card] +[card] name=Long Rest abilities=exiledeath target=*|mygraveyard @@ -56434,6 +56679,15 @@ mana={1}{B} type=Sorcery [/card] [card] +name=Lost Isle Calling +auto=@scryed(*|mybattlefield,mystack):name(Put verse counter) counter(0/0,1,Verse) +auto=this(variable{hascntverse}<=6) {4}{U}{U}{E}:name(Draw cards) name(Draw cards) draw:hascntverse controller asSorcery +auto=this(variable{hascntverse}>=7) {4}{U}{U}{E}:name(Draw cards) name(Draw cards) draw:hascntverse controller && turns:+1 controller asSorcery +text=Whenever you scry, put a verse counter on Lost Isle Calling. -- {4}{U}{U}, Exile Lost Isle Calling: Draw a card for each verse counter on Lost Isle Calling. If it had seven or more verse counters on it, take an extra turn after this one. Activate only as a sorcery. +mana={1}{U} +type=Enchantment +[/card] +[card] name=Lost Legion aicode=activate transforms((,newability[all(*[zpos<=2]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot auto=_SCRY2_ @@ -71577,6 +71831,57 @@ mana={1}{W} type=Instant [/card] [card] +name=Press the Enemy +target=*[-land]|opponentstack,opponentbattlefield +auto=if cantargetcard(*|opponentstack) then spellmover(hand) else moveto(ownerhand) +auto=if cantargetcard(*[manacost=0]|*) then if type(instant[manacost<=0]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=0]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=0]|*) then if type(sorcery[manacost<=0]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=0]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=1]|*) then if type(instant[manacost<=1]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=1]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=1]|*) then if type(sorcery[manacost<=1]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=1]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=2]|*) then if type(instant[manacost<=2]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=2]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=2]|*) then if type(sorcery[manacost<=2]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=2]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=3]|*) then if type(instant[manacost<=3]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=3]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=3]|*) then if type(sorcery[manacost<=3]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=3]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=4]|*) then if type(instant[manacost<=4]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=4]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=4]|*) then if type(sorcery[manacost<=4]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=4]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=5]|*) then if type(instant[manacost<=5]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=5]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=5]|*) then if type(sorcery[manacost<=5]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=5]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=6]|*) then if type(instant[manacost<=6]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=6]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=6]|*) then if type(sorcery[manacost<=6]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=6]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=7]|*) then if type(instant[manacost<=7]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=7]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=7]|*) then if type(sorcery[manacost<=7]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=7]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=8]|*) then if type(instant[manacost<=8]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=8]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=8]|*) then if type(sorcery[manacost<=8]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=8]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=9]|*) then if type(instant[manacost<=9]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=9]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=9]|*) then if type(sorcery[manacost<=9]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=9]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=10]|*) then if type(instant[manacost<=10]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=10]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=10]|*) then if type(sorcery[manacost<=10]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=10]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=11]|*) then if type(instant[manacost<=11]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=11]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=11]|*) then if type(sorcery[manacost<=11]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=11]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=12]|*) then if type(instant[manacost<=12]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=12]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=12]|*) then if type(sorcery[manacost<=12]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=12]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=13]|*) then if type(instant[manacost<=13]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=13]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=13]|*) then if type(sorcery[manacost<=13]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=13]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=14]|*) then if type(instant[manacost<=14]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=14]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=14]|*) then if type(sorcery[manacost<=14]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=14]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=15]|*) then if type(instant[manacost<=15]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=15]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=15]|*) then if type(sorcery[manacost<=15]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=15]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=16]|*) then if type(instant[manacost<=16]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=16]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=16]|*) then if type(sorcery[manacost<=16]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=16]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=17]|*) then if type(instant[manacost<=17]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=17]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=17]|*) then if type(sorcery[manacost<=17]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=17]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=18]|*) then if type(instant[manacost<=18]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=18]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=18]|*) then if type(sorcery[manacost<=18]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=18]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=19]|*) then if type(instant[manacost<=19]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=19]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost=19]|*) then if type(sorcery[manacost<=19]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=19]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost>=20]|*) then if type(instant[manacost<=20]|myhand)~morethan~0 then choice name(Cast instant) name(Cast instant) target(instant[manacost<=20]|myhand) activate castcard(normal) +auto=if cantargetcard(*[manacost>=20]|*) then if type(sorcery[manacost<=20]|myhand)~morethan~0 then choice name(Cast sorcery) name(Cast sorcery) target(sorcery[manacost<=20]|myhand) activate castcard(normal) +auto=choice name(Don't cast anything) donothing +text=Return target spell or nonland permanent an opponent controls to its owner's hand. You may cast an instant or sorcery spell with equal or lesser mana value from your hand without paying its mana cost. +mana={2}{U}{U} +type=Instant +[/card] +[card] name=Preston, the Vanisher auto=@movedto(other creature|mybattlefield):name(Check if casted) all(trigger[to]) transforms((,newability[ifnot casted(this) then clone and!( becomes(Creature Illusion^0/1^white) forever )!])) forever auto={1}{W}{S(spirit|mybattlefield)}{S(spirit|mybattlefield)}{S(spirit|mybattlefield)}{S(spirit|mybattlefield)}{S(spirit|mybattlefield)}:name(Exile nonland permanent) target(*[-land]|battlefield) moveto(exile) @@ -77544,6 +77849,17 @@ mana={1}{U}{B} type=Sorcery [/card] [card] +name=Ringwraiths +auto=name(Opponent creature gains -3/-3) target(creature|opponentBattlefield) transforms((,newability[-3/-3],newability[if cantargetcard(*[legendary]|*) then life:-3 controller])) ueot +autograveyard=@ringtemptedof(player):name(Return to hand) moveto(myhand) +text=When Ringwraiths enters the battlefield, target creature an opponent controls gets -3/-3 until end of turn. If that creature is legendary, its controller loses 3 life. -- When the Ring tempts you, return Ringwraiths from your graveyard to your hand. +mana={4}{B}{B} +type=Creature +subtype=Wraith Knight +power=5 +toughness=5 +[/card] +[card] name=Rionya, Fire Dancer auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~0}:name(Copy creature) target(other creature|mybattlefield) clone with(unearth,haste) auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~1}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(unearth^haste)],newability[clone with(unearth^haste)])) oneshot @@ -80770,6 +81086,18 @@ mana={3}{G} type=Sorcery [/card] [card] +name=Saradoc, Master of Buckland +auto=name(Create halfling) token(Halfling,Creature Halfling,1/1,white) +auto=@movedto(other creature[-token&power<=2]|myBattlefield):name(Create halfling) token(Halfling,Creature Halfling,1/1,white) +auto={T(halfling[-tapped]|mybattlefield)}{T(halfling[-tapped]|mybattlefield)}:name(Gains 2/0 and lifelink) transforms((,newability[2/0],newability[lifelink])) ueot +text=Whenever Saradoc, Master of Buckland or another nontoken creature with power 2 or less enters the battlefield under your control, create a 1/1 white Halfling creature token. -- Tap two other untapped Halflings you control: Saradoc gets +2/+0 and gains lifelink until end of turn. +mana={3}{W} +type=Legendary Creature +subtype=Halfling Citizen +power=2 +toughness=4 +[/card] +[card] name=Sardian Avenger abilities=first strike,trample auto=_ATTACKING_type:artifact:opponentBattlefield/0 ueot @@ -81109,6 +81437,17 @@ power=7 toughness=6 [/card] [card] +name=Sauron, the Lidless Eye +auto=name(Gain control of creature) target(creature|opponentbattlefield) moveto(mybattlefield) and!(transforms((,newability[phaseaction[endofturn sourceinplay] moveTo(previousbattlefield)],newability[untap],newability[haste])) ueot)! +auto={1}{B}{R}:name(Creaures gain 2/0) transforms((,newability[life:-2 opponent],newability[all(creature|myBattlefield) 2/0 ueot])) ueot +text=When Sauron, the Lidless Eye enters the battlefield, gain control of target creature an opponent controls until end of turn. Untap it. It gains haste until end of turn. -- {1}{B}{R}: Creatures you control get +2/+0 until end of turn. Each opponent loses 2 life. +mana={3}{B}{R} +type=Legendary Creature +subtype=Avatar Horror +power=4 +toughness=4 +[/card] +[card] name=Sauron, the Necromancer abilities=menace auto=_ATTACKING_name(Exile creature) target(creature|mygraveyard) moveto(myexile) and!( clone with(battleready) and!( transforms((removecreaturesubtypes,removemc,setpower=3,settoughness=3,black,newability[becomes(Wraith) forever],newability[menace],newability[@next endofturn restriction{type(Sauron^ the Necromancer[ringbearer]|mybattlefield)~equalto~0}:name(Sacrifice) sacrifice])) forever )! )! @@ -84288,6 +84627,20 @@ mana={B} type=Instant [/card] [card] +name=Shelob, Child of Ungoliant +abilities=deathtouch +auto=_WARD_(2) +auto=lord(other spider|myBattlefield) deathtouch +auto=@targeted(other spider|myBattlefield) from(*|opponentzones):choice name(This spell costs 2 more) name(This spell costs 2 more) target(*|opponentzones) transforms((,newability[pay[[{2}]] name(pay 2 mana) donothing?fizzle])) oneshot +auto=@movedto(other creature|graveyard) from(battlefield):may name(Copy creature damaged by spider) all(trigger[to]) clone and!( transforms((removetypes,newability[becomes(Artifact Food) forever],newability[{2}{T}{S}:name(Sacrifice and gain 3 life) life:3 controller])) forever )! +text=Deathtouch, ward {2} -- Other Spiders you control have deathtouch and ward {2}. -- Whenever another creature dealt damage this turn by a Spider you controlled dies, create a token that's a copy of that creature, except it's a Food artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life," and it loses all other card types. +mana={4}{B}{G} +type=Legendary Creature +subtype=Spider Demon +power=8 +toughness=8 +[/card] +[card] name=Sheltered Thicket abilities=cycling auto=tap @@ -87575,6 +87928,17 @@ power=6 toughness=6 [/card] [card] +name=Smeagol, Helpful Guide +auto=@each my endofturn restriction{myhasdeadcreature}:name(The ring tempts you) ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +auto=@ringtemptedof(player):name(Reveal opponent cards) transforms((,newability[name(Choose land card) target(land[zpos=oppofindfirsttypeland]|opponentlibrary) moveto(mybattlefield) and!( transforms((,newability[tap(noevent)],newability[all(*[-land&zpos<=oppofindfirsttypeland]|opponentlibrary) moveto(opponentgraveyard)])) oneshot )!])) oneshot +text=At the beginning of your end step, if a creature died under your control this turn, the Ring tempts you. -- Whenever the Ring tempts you, target opponent reveals cards from the top of their library until they reveal a land card. Put that card onto the battlefield tapped under your control and the rest into their graveyard. +mana={1}{B}{G} +type=Legendary Creature +subtype=Halfling Horror +power=4 +toughness=2 +[/card] +[card] name=Smell Fear target=creature|myBattlefield auto=_PROLIFERATE_ @@ -88192,7 +88556,7 @@ name=Solitude abilities=flash,lifelink other={E(*[white]|myhand)} name(Evoke) auto=if paid(alternative) then sacrifice -auto=target(creature) moveto(exile) and!( transforms((,newability[life:power controller])) oneshot )! +auto=may name(Exile a creature) target(other creature|battlefield) moveto(exile) and!( transforms((,newability[life:power controller])) oneshot )! text=Flash -- Lifelink -- When Solitude enters the battlefield, exile up to one other target creature. That creature's controller gains life equal to its power. -- Evoke-Exile a white card from your hand. mana={3}{W}{W} type=Creature @@ -91568,6 +91932,15 @@ power=2 toughness=3 [/card] [card] +name=Stone of Erech +auto=lord(creature|opponentBattlefield) exiledeath +auto={2}{T}{S}:name(Exile opponent graveyard) transforms((,newability[draw:1 controller],newability[all(*|opponentgraveyard) moveto(opponentexile)])) oneshot +auto={2}{T}{S}:name(Exile your graveyard) transforms((,newability[draw:1 controller],newability[all(*|mygraveyard) moveto(myexile)])) oneshot +text=If a creature an opponent controls would die, exile it instead. -- {2}, {T}, Sacrifice Stone of Erech: Exile target player's graveyard. Draw a card. +mana={1} +type=Legendary Artifact +[/card] +[card] name=Stonebinder's Familiar auto=@movedto(*|exile) restriction{during my turn} turnlimited:counter(1/1) text=Whenever one or more cards are put into exile during your turn, put a +1/+1 counter on Stonebinder's Familiar. This ability triggers only once each turn. @@ -97015,6 +97388,15 @@ text=Your Ring-bearer is legendary and can't be blocked by creatures with greate type=Emblem [/card] [card] +name=The Ring Goes South +aicode=activate transforms((,newability[all(*[zpos=findfirsttypeland]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[tap(noevent)],newability[all(*[zpos<=findfirsttypeland]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) oneshot )!])) oneshot +auto=name(Reveal from top) name(Reveal from top) thisforeach(variable{type:creature[legendary]:mybattlefield}>0) ability$!name(Reveal) reveal:1 revealuntil(land|mylibrary) optionone name(Put land in play) target(land|myreveal) moveto(mybattlefield) and!( tap(noevent) )! optiononeend optiontwo name(Put on bottom) all(*|myreveal) bottomoflibrary optiontwoend revealend!$ controller +autostack=name(The ring tempts you) ability$!name(The ring tempts you) _RINGTEMPTS_!$ controller +text=The Ring tempts you. Then reveal cards from the top of your library until you reveal X land cards, where X is the number of legendary creatures you control. Put those lands onto the battlefield tapped and the rest on the bottom of your library in a random order. +mana={3}{G} +type=Sorcery +[/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 @@ -97223,6 +97605,20 @@ mana={2}{W}{W} type=Legendary Planeswalker [/card] [card] +name=The Watcher in the Water +auto=tap(noevent) +auto=counter(0/0,9,Stun) +auto=@drawof(player) restriction{compare(opponentturn)~morethan~0}:name(Create tentacle) token(Tentacle,Creature Tentacle,1/1,blue) +auto=@movedTo(tentacle|graveyard) from(mybattlefield):may name(Untap kraken) target(kraken|mybattlefield) untap +auto=@movedTo(tentacle|graveyard) from(mybattlefield):may name(Put stun counter) target(*[-land]|battlefield) counter(0/0.1.Stun) +text=The Watcher in the Water enters the battlefield tapped with nine stun counters on it. (If a permanent with a stun counter would become untapped, remove one from it instead.) -- Whenever you draw a card during an opponent's turn, create a 1/1 blue Tentacle creature token. -- Whenever a Tentacle you control dies, untap up to one target Kraken and put a stun counter on up to one target nonland permanent. +mana={3}{U}{U} +type=Legendary Creature +subtype=Kraken +power=9 +toughness=9 +[/card] +[card] name=The World Tree auto=tap(noevent) auto={T}:add{G} @@ -99024,6 +99420,19 @@ power=3 toughness=3 [/card] [card] +name=Tom Bombadil +aicode=activate transforms((,newability[all(*[zpos=findfirsttypesaga]|mylibrary) moveto(myBattlefield) and!( all(*[zpos<=findfirsttypesaga]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )!])) oneshot +auto=@sacrificed(saga|myBattlefield) turnlimited:name(Reveal top card) reveal:1 revealzone(mylibrary) revealuntil(saga|mylibrary) optionone choice name(Get Card) target(saga|reveal) moveto(mylibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo choice name(put on bottom) all(*|reveal) bottomoflibrary optiontwoend afterrevealed all(saga[tobecast]|mylibrary) moveto(mybattlefield) afterrevealedend revealend +auto=this(variable{totcntenclore}>=4) indestructible +auto=this(variable{totcntenclore}>=4) opponentshroud +text=As long as there are four or more lore counters among Sagas you control, Tom Bombadil has hexproof and indestructible. -- Whenever the final chapter ability of a Saga you control resolves, reveal cards from the top of your library until you reveal a Saga card. Put that card onto the battlefield and the rest on the bottom of your library in a random order. This ability triggers only once each turn. +mana={W}{U}{B}{R}{G} +type=Legendary Creature +subtype=God Bard +power=4 +toughness=4 +[/card] +[card] name=Tomakul Honor Guard auto=_WARD_(2) text=Ward {2} (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {2}.) diff --git a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt index a8a3a5d23..97503f177 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 30-06-2023 +#We sorted this in alphabetical order - Luruz & Vitty85 04-07-2023 [card] name=Abian, Luvion Usurper auto=counter(0/0,5,loyalty) @@ -3693,7 +3693,7 @@ auto=@counteradded(0/0,1,WrennDepleted) from(*|mygraveyard) turnlimited:name(Ret auto={C(0/0,1,Loyalty)}:name(+1: Transform land) target(land|mybattlefield) transforms((Elemental Creature,setpower=3,settoughness=3,newability[haste],newability[vigilance],newability[opponentshroud])) uynt auto={C(0/0,1,Loyalty)}:name(+1: Don't transform any land) donothing auto={C(0/0,-2,Loyalty)}:name(-2: Mill and return) all(*[zpos<=2]|mylibrary) moveto(mygraveyard) and!( transforms((,newability[counter(0/0.1.WrennDepleted) notrg])) ueot )! && all(*[zpos=3]|mylibrary) moveto(mygraveyard) and!( transforms((,newability[counter(0/0.1.WrennDepleted)])) ueot )! -auto={C(0/0,-1,Loyalty)}:name(-7: Emblem play from graveyard) emblem transforms((,newability[lord(*[-instant;-sorcery]|mygraveyard) canplayfromgraveyard])) forever dontremove +auto={C(0/0,-7,Loyalty)}:name(-7: Emblem play from graveyard) emblem transforms((,newability[lord(*[-instant;-sorcery]|mygraveyard) canplayfromgraveyard])) forever dontremove text=Lands you control have "{T}: Add one mana of any color." -- [+1]: Up to one target land you control becomes a 3/3 Elemental creature with vigilance, hexproof, and haste until your next turn. It's still a land. -- [−2]: Mill three cards. You may put a permanent card from among the milled cards into your hand. -- [−7]: You get an emblem with "You may play lands and cast permanent spells from your graveyard." mana={1}{G}{G} type=Legendary Planeswalker diff --git a/projects/mtg/bin/Res/sets/primitives/unsupported.txt b/projects/mtg/bin/Res/sets/primitives/unsupported.txt index b581a1f2f..181dddf59 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 21-06-2023 +#I sorted this programatically - Vitty85 04-07-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. @@ -4152,6 +4152,15 @@ type=Legendary Artifact subtype=Equipment [/card] [card] +name=Goldberry, River-Daughter +text={T}: Move a counter of each kind not on Goldberry, River-Daughter from another target permanent you control onto Goldberry. -- {U}, {T}: Move one or more counters from Goldberry onto another target permanent you control. If you do, draw a card. +mana={1}{U} +type=Legendary Creature +subtype=Nymph +power=1 +toughness=3 +[/card] +[card] name=Golgothian Sylex text={1}, {T}: Each nontoken permanent from the Antiquities expansion is sacrificed by its controller. mana={4} @@ -5873,15 +5882,6 @@ power=2 toughness=2 [/card] [card] -name=Leonin Shikari -text=You may activate equip abilities any time you could cast an instant. -mana={1}{W} -type=Creature -subtype=Cat Soldier -power=2 -toughness=2 -[/card] -[card] name=Leovold's Operative text=Draft Leovold's Operative face up. -- As you draft a card, you may draft an additional card from that booster pack. If you do, turn Leovold's Operative face down, then pass the next booster pack without drafting a card from it. (You may look at that booster pack.) mana={2}{G} @@ -7695,11 +7695,14 @@ mana={2}{B} type=Sorcery [/card] [card] +name=Palantir of Orthanc +text=At the beginning of your end step, put an influence counter on Palantir of Orthanc and scry 2. Then target opponent may have you draw a card. If that player doesn't, you mill X cards, where X is the number of influence counters on Palantir of Orthanc, and that player loses life equal to the total mana value of those cards. +mana={3} +type=Legendary Artifact +[/card] +[card] name=Paliano -auto=lord(other creature|myBattlefield) -auto=@chaos ensuescreate(assassin:creature assassin:1/1:black:deathtouch,haste) text=When one or more creatures you control deal combat damage to a player, if there is no monarch, you become the monarch. -- Whenever chaos ensues, create a 1/1 black Assassin creature token with deathtouch and haste. -mana=null type=Plane subtype=Fiora [/card] @@ -9219,6 +9222,15 @@ mana={B} type=Sorcery [/card] [card] +name=Sharkey, Tyrant of the Shire +text=Activated abilities of lands your opponents control can't be activated unless they're mana abilities. -- Sharkey, Tyrant of the Shire has all activated abilities of lands your opponents control except mana abilities. -- Mana of any type can be spent to activate Sharkey's abilities. +mana={2}{U}{B} +type=Legendary Creature +subtype=Avatar Rogue +power=2 +toughness=4 +[/card] +[card] name=Shelkin Brownie text={T}: Target creature loses all "bands with other" abilities until end of turn. mana={1}{G} diff --git a/projects/mtg/include/MTGDefinitions.h b/projects/mtg/include/MTGDefinitions.h index fcefd68de..0709a82ba 100644 --- a/projects/mtg/include/MTGDefinitions.h +++ b/projects/mtg/include/MTGDefinitions.h @@ -360,7 +360,8 @@ class Constants POISONEIGHTTOXIC = 232, POISONNINETOXIC = 233, POISONTENTOXIC = 234, - NB_BASIC_ABILITIES = 235, + EQPASINST = 235, + NB_BASIC_ABILITIES = 236, RARITY_S = 'S', //Special Rarity RARITY_M = 'M', //Mythics diff --git a/projects/mtg/src/GameObserver.cpp b/projects/mtg/src/GameObserver.cpp index 49b971189..3b9d7b6e2 100644 --- a/projects/mtg/src/GameObserver.cpp +++ b/projects/mtg/src/GameObserver.cpp @@ -814,7 +814,7 @@ void GameObserver::gameStateBasedEffects() else if((!card->target->isLand() && card->hasType("fortification"))) ((AEquip*)a)->unequip(); } - if(card->controller() && !card->mutation) + if(card->controller() && !card->mutation && ((AEquip*)a)->getActionTc()) ((AEquip*)a)->getActionTc()->Owner = card->controller(); //fix for equip ability when the equipment changed controller... } diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index 2734fc8b1..660db012c 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -7162,7 +7162,9 @@ int ActivatedAbility::isReactingToClick(MTGCardInstance * card, ManaCost * mana) case AS_SORCERY: if (player != game->currentPlayer) return 0; - if (cPhase != MTG_PHASE_FIRSTMAIN && cPhase != MTG_PHASE_SECONDMAIN) + if (!card->hasType(Subtypes::TYPE_EQUIPMENT) && cPhase != MTG_PHASE_FIRSTMAIN && cPhase != MTG_PHASE_SECONDMAIN) + return 0; + if (card->hasType(Subtypes::TYPE_EQUIPMENT) && !card->has(Constants::EQPASINST) && cPhase != MTG_PHASE_FIRSTMAIN && cPhase != MTG_PHASE_SECONDMAIN) return 0; if (player->opponent()->getObserver()->mLayers->stackLayer()->count(0, NOT_RESOLVED) != 0||game->mLayers->stackLayer()->count(0, NOT_RESOLVED) != 0||player->getObserver()->mLayers->stackLayer()->count(0, NOT_RESOLVED) != 0) return 0; diff --git a/projects/mtg/src/MTGDefinitions.cpp b/projects/mtg/src/MTGDefinitions.cpp index 72a1681f6..6c27608b1 100644 --- a/projects/mtg/src/MTGDefinitions.cpp +++ b/projects/mtg/src/MTGDefinitions.cpp @@ -265,7 +265,8 @@ const char* Constants::MTGBasicAbilities[] = { "poisonseventoxic", // Card has toxic 7 "poisoneighttoxic", // Card has toxic 8 "poisonninetoxic", // Card has toxic 9 - "poisontentoxic" // Card has toxic 10 + "poisontentoxic", // Card has toxic 10 + "eqpasinst" // Can equip as instant }; map Constants::MTGBasicAbilitiesMap;