diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index 2b2e2c3ba..5ac11eec8 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -352,3 +352,13 @@ mana={B} type=Instant text=Target creature gets +2/+0 and gains deathtouch until end of turn. Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) [/card] +[card] +name=Yixlid Jailer +auto=lord(*|graveyard) loseabilities +text=Cards in graveyards lose all abilities. +mana={1}{B} +type=Creature +subtype=Zombie Wizard +power=2 +toughness=1 +[/card] diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index 5b9ee34a1..5a8969ebb 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -11945,7 +11945,7 @@ toughness=1 [/card] [card] name=Blustersquall -alias=11000 +abilities=overload other={3}{U} name(Overload) target=creature|opponentbattlefield auto=overload tap all(creature|opponentbattlefield) @@ -12646,7 +12646,6 @@ subtype=Equipment [/card] [card] name=Boneyard Wurm -alias=1111 anyzone=type:creature:mygraveyard/type:creature:mygraveyard cdaactive text=Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard. mana={1}{G} @@ -15448,7 +15447,6 @@ subtype=Forest Plains [/card] [card] name=Cantivore -alias=1111 abilities=vigilance anyzone=type:enchantment:graveyard/type:enchantment:graveyard cdaactive text=Vigilance -- Cantivore's power and toughness are each equal to the number of enchantment cards in all graveyards. @@ -17740,7 +17738,7 @@ type=Sorcery [/card] [card] name=Chemister's Trick -alias=11000 +abilities=overload other={3}{U}{R} name(Overload) target=creature|opponentbattlefield auto=paidmana -2/0 @@ -18074,7 +18072,6 @@ toughness=2 [/card] [card] name=Cho-Manno's Blessing -alias=1000 abilities=auraward target=creature abilities=flash @@ -19729,7 +19726,6 @@ type=Instant [/card] [card] name=Cognivore -alias=1111 abilities=flying anyzone=type:instant:graveyard/type:instant:graveyard cdaactive text=Flying -- Cognivore's power and toughness are each equal to the number of instant cards in all graveyards. @@ -19799,7 +19795,6 @@ toughness=1 [/card] [card] name=Coldsteel Heart -alias=1000 auto=tap auto=chooseacolor {T}:add{chosencolor} chooseend text=Coldsteel Heart enters the battlefield tapped. -- As Coldsteel Heart enters the battlefield, choose a color. -- {T}: Add one mana of the chosen color to your mana pool. @@ -21242,7 +21237,7 @@ type=Instant [/card] [card] name=Counterflux -alias=11000 +abilities=overload other={1}{U}{U}{R} name(Overload) abilities=nofizzle target=*|opponentstack @@ -23086,7 +23081,6 @@ subtype=Aura Curse [/card] [card] name=Curse of Wizardry -alias=1000 auto=chooseacolor transforms((,newability[@movedto(*[chosencolor]|mystack):life:-1 controller],newability[@movedto(*[chosencolor]|opponentstack):life:-1 opponent])) chooseend text=As Curse of Wizardry enters the battlefield, choose a color. -- Whenever a player casts a spell of the chosen color, that player loses 1 life. mana={2}{B}{B} @@ -23234,7 +23228,7 @@ toughness=4 [/card] [card] name=Cyclonic Rift -alias=11000 +abilities=overload other={6}{U} name(Overload) target=*[-land]|opponentbattlefield auto=overload moveto(ownerhand) all(*[-land]|opponentbattlefield) @@ -26020,6 +26014,16 @@ mana={3}{U} type=Enchantment [/card] [card] +name=Delver of Secrets +auto=@each my upkeep:reveal:1 optionone name(transform) target(*[instant;sorcery]|reveal) moveto(mylibrary) and!( all(this) transforms((,newability[flip(Insectile Aberration)])) forever )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend +text=At the beginning of your upkeep, look at the top card of your library. You may reveal that card. If an instant or sorcery card is revealed this way, transform Delver of Secrets. +mana={U} +type=Creature +subtype=Human Wizard +power=1 +toughness=1 +[/card] +[card] name=Dematerialize target=* auto=moveTo(ownerhand) @@ -26677,7 +26681,6 @@ text=Destroy target artifact with converted mana cost X. It can't be regenerated [/card] [card] name=Detritivore -alias=1111 anyzone=type:land[-basic]:opponentgraveyard/type:land[-basic]:opponentgraveyard cdaactive autoexile=@counterremoved(0/0,1,Time) from(sourcecard) suspended:destroy target(land[-basic]) suspend(0)={X}{3}{R} @@ -28418,7 +28421,7 @@ type=Instant [/card] [card] name=Downsize -alias=11000 +abilities=overload other={2}{U} name(Overload) target=creature|opponentbattlefield auto=overload -4/0 all(creature|opponentbattlefield) @@ -30847,7 +30850,7 @@ subtype=Aura [/card] [card] name=Dynacharge -alias=11000 +abilities=overload other={2}{R} name(Overload) target=creature|mybattlefield auto=paidmana 2/0 @@ -31693,7 +31696,7 @@ toughness=1 [/card] [card] name=Electrickery -alias=11000 +abilities=overload other={1}{R} name(Overload) target=creature|opponentbattlefield auto=paidmana damage:1 @@ -38491,7 +38494,6 @@ toughness=2 [/card] [card] name=Flickering Ward -alias=1000 abilities=auraward target=creature auto=chooseacolor teach(creature) protection from(*[chosencolor]) chooseend @@ -38584,7 +38586,6 @@ toughness=1 [/card] [card] name=Floating Shield -alias=1000 abilities=auraward target=creature auto=chooseacolor teach(creature) protection from(*[chosencolor]) chooseend @@ -39521,6 +39522,13 @@ mana={1}{G} type=Enchantment [/card] [card] +name=Fork in the Road +auto=name(put in hand) moveto(myhand) notatarget(land[basic]|mylibrary) and!(name(put in graveyard) moveto(mygraveyard) notatarget(land[basic]|mylibrary))! oneshot +text=Search your library for up to two basic land cards and reveal them. Put one into your hand and the other into your graveyard. Then shuffle your library. +mana={1}{G} +type=Sorcery +[/card] +[card] name=Forked Bolt target=creature,player auto=damage:1 @@ -39548,13 +39556,6 @@ mana={R}{R} type=Instant [/card] [card] -name=Fork in the Road -auto=name(put in hand) moveto(myhand) notatarget(land[basic]|mylibrary) and!(name(put in graveyard) moveto(mygraveyard) notatarget(land[basic]|mylibrary))! oneshot -text=Search your library for up to two basic land cards and reveal them. Put one into your hand and the other into your graveyard. Then shuffle your library. -mana={1}{G} -type=Sorcery -[/card] -[card] name=Forlorn Pseudamma abilities=intimidate auto=@untapped(this):name(pay 2B for 2/2 Zombie) pay[[{2}{B}]] name(Pay 2B) token(Zombie,Enchantment Creature Zombie,2/2,black) controller @@ -47785,7 +47786,6 @@ toughness=3 [/card] [card] name=Hall of Triumph -alias=1000 auto=activatechooseacolor transforms((,newability[lord(creature[chosencolor]|mybattlefield) 1/1])) forever activatechooseend text=As Hall of Triumph enters the battlefield, choose a color. -- Creatures you control of the chosen color get +1/+1. mana={3} @@ -49639,7 +49639,7 @@ subtype=Equipment [/card] [card] name=Helm of Possession -alias=50120 +abilities=shackler auto={2}{T}{S(creature|mybattlefield)}:shackle target(creature) auto=@each my untap restriction{canuntap}:may untap text=You may choose not to untap Helm of Possession during your untap step. -- {2}, {T}, Sacrifice a creature: Gain control of target creature for as long as you control Helm of Possession and Helm of Possession remains tapped. @@ -50435,7 +50435,7 @@ type=Artifact [/card] [card] name=Hivis of the Scale -alias=50120 +abilities=shackler auto={T}:shackle target(dragon) auto=@each my untap restriction{canuntap}:may untap text=You may choose not to untap Hivis of the Scale during your untap step. -- {T}: Gain control of target Dragon for as long as you control Hivis and Hivis remains tapped. @@ -53868,6 +53868,14 @@ toughness=1 color=green [/card] [card] +name=Insectile Aberration +type=Creature +abilities=flying +subtype=Human Insect +power=3 +toughness=2 +[/card] +[card] name=Inside Out target=creature auto=swap @@ -54270,7 +54278,6 @@ type=Enchantment [/card] [card] name=Iona, Shield of Emeria -alias=1000 abilities=flying auto=chooseacolor maxCast(*[chosencolor])0 opponent chooseend text=Flying -- As Iona, Shield of Emeria enters the battlefield, choose a color. -- Your opponents can't cast spells of the chosen color. @@ -55493,7 +55500,6 @@ toughness=3 [/card] [card] name=Jihad -alias=1000 auto=chooseacolor transforms((,newability[aslongas(*[chosencolor]|opponentbattlefield) lord(creature[white]|mybattlefield) 2/1],newability[aslongas(*[chosencolor]|opponentbattlefield) sacrifice <1])) chooseend text=As Jihad enters the battlefield, choose a color and an opponent. -- White creatures get +2/+1 as long as the chosen player controls a nontoken permanent of the chosen color. -- When the chosen player controls no nontoken permanents of the chosen color, sacrifice Jihad. mana={W}{W}{W} @@ -61527,7 +61533,6 @@ toughness=5 [/card] [card] name=Lhurgoyf -alias=1111 anyzone=type:creature:graveyard/plusonetype:creature:graveyard cdaactive text=Lhurgoyf's power is equal to the number of creature cards in all graveyards and its toughness is equal to that number plus 1. mana={2}{G}{G} @@ -63024,7 +63029,6 @@ toughness=2 [/card] [card] name=Lord of Extinction -alias=1111 anyzone=type:*:graveyard/type:*:graveyard cdaactive text=Lord of Extinction's power and toughness are each equal to the number of cards in all graveyards. mana={3}{B}{G} @@ -63796,7 +63800,6 @@ type=Instant [/card] [card] name=Lurebound Scarecrow -alias=1000 auto=chooseacolor aslongas(*[chosencolor]|myBattlefield) sacrifice <1 chooseend text=As Lurebound Scarecrow enters the battlefield, choose a color. -- When you control no permanents of the chosen color, sacrifice Lurebound Scarecrow. mana={3} @@ -64491,7 +64494,6 @@ toughness=6 [/card] [card] name=Magnivore -alias=1111 abilities=haste anyzone=type:sorcery:graveyard/type:sorcery:graveyard cdaactive text=Haste (This creature can attack the turn it comes under your control.) -- Magnivore's power and toughness are each equal to the number of sorcery cards in all graveyards. @@ -69407,7 +69409,7 @@ toughness=4 [/card] [card] name=Mizzium Mortars -alias=11000 +abilities=overload other={3}{R}{R}{R} name(Overload) target=creature|opponentbattlefield auto=paidmana damage:4 @@ -69418,7 +69420,7 @@ type=Sorcery [/card] [card] name=Mizzium Skin -alias=11000 +abilities=overload other={1}{U} name(Overload) target=creature|mybattlefield auto=paidmana 0/1 @@ -70774,7 +70776,6 @@ toughness=2 [/card] [card] name=Mortivore -alias=1111 auto={B}:regenerate anyzone=type:creature:graveyard/type:creature:graveyard cdaactive text=Mortivore's power and toughness are each equal to the number of creature cards in all graveyards. -- {B}: Regenerate Mortivore. (The next time this creature would be destroyed this turn, it isn't. Instead tap it, remove all damage from it, and remove it from combat.) @@ -75772,7 +75773,7 @@ toughness=6 [/card] [card] name=Old Man of the Sea -alias=50120 +abilities=shackler auto={T}:shackle target(creature[power<=storedpower]) auto=@each my untap restriction{canuntap}:may untap text=You may choose not to untap Old Man of the Sea during your untap step. -- {T}: Gain control of target creature with power less than or equal to Old Man of the Sea's power for as long as Old Man of the Sea remains tapped and that creature's power remains less than or equal to Old Man of the Sea's power. @@ -77807,7 +77808,6 @@ subtype=Equipment [/card] [card] name=Paradise Plume -alias=1000 auto=chooseacolor transforms((,newability[{T}:add{chosencolor}],newability[@movedto(*[chosencolor]|stack):life:1 controller])) forever chooseend text=As Paradise Plume enters the battlefield, choose a color. -- Whenever a player casts a spell of the chosen color, you may gain 1 life. -- {T}: Add one mana of the chosen color to your mana pool. mana={4} @@ -78639,7 +78639,6 @@ type=Artifact [/card] [card] name=Pentarch Paladin -alias=1000 abilities=flanking auto=chooseacolor {W}{W}{T}:destroy target(*[chosencolor]) chooseend text=Flanking (Whenever a creature without flanking blocks this creature, the blocking creature gets -1/-1 until end of turn.) -- As Pentarch Paladin enters the battlefield, choose a color. -- {W}{W}, {T}: Destroy target permanent of the chosen color. @@ -78651,7 +78650,6 @@ toughness=3 [/card] [card] name=Pentarch Ward -alias=1000 abilities=auraward target=creature auto=chooseacolor teach(creature) protection from(*[chosencolor]) chooseend @@ -81977,7 +81975,6 @@ type=Enchantment [/card] [card] name=Prism Ring -alias=1000 auto=activatechooseacolor transforms((,newability[@movedto(*[chosencolor]|mystack):life:1 controller])) forever activatechooseend text=As Prism Ring enters the battlefield, choose a color. -- Whenever you cast a spell of the chosen color, you gain 1 life. mana={1} @@ -82493,7 +82490,6 @@ toughness=2 [/card] [card] name=Psychic Allergy -alias=1000 auto=upcost[{S(island|mybattlefield)}{S(island|mybattlefield)}] sacrifice auto=chooseacolor transforms((,newability[@each opponent upkeep:damage:type:*[-token&chosencolor]:opponentbattlefield opponent])) chooseend text=As Psychic Allergy enters the battlefield, choose a color. -- At the beginning of each opponent's upkeep, Psychic Allergy deals X damage to that player, where X is the number of nontoken permanents of the chosen color he or she controls. -- At the beginning of your upkeep, destroy Psychic Allergy unless you sacrifice two Islands. @@ -83714,7 +83710,6 @@ toughness=1 [/card] [card] name=Quirion Elves -alias=1000 auto={T}:Add{G} auto=chooseacolor {T}:add{chosencolor} chooseend text=As Quirion Elves enters the battlefield, choose a color. -- {T}: Add {G} to your mana pool. -- {T}: Add one mana of the chosen color to your mana pool. @@ -87461,7 +87456,6 @@ toughness=3 [/card] [card] name=Revenant -alias=1111 abilities=flying anyzone=type:creature:mygraveyard/type:creature:mygraveyard cdaactive text=Flying -- Revenant's power and toughness are each equal to the number of creature cards in your graveyard. @@ -89670,7 +89664,7 @@ toughness=* [/card] [card] name=Rubinia Soulsinger -alias=50120 +abilities=shackler auto={T}:shackle target(creature) auto=@each my untap restriction{canuntap}:may untap text=You may choose not to untap Rubinia Soulsinger during your untap step. -- {T}: Gain control of target creature for as long as you control Rubinia and Rubinia remains tapped. @@ -91655,6 +91649,17 @@ power=2 toughness=1 [/card] [card] +name=Sarkhan the Mad +auto=counter(0/0,7,loyalty) +auto={0}:name(0: reveal damage) Reveal:1 revealzone(mylibrary) revealuntil(*|mylibrary) optionone name(put in hand) target(*|reveal) moveto(myhand) optiononeend afterrevealed all(this) damage:revealedmana afterrevealedend revealend +auto={C(0/0,-2,Loyalty)}:name(-2: sacrifice) target(creature) sacrifice and!( token(Dragon,creature dragon,5/5,flying,red) targetcontroller )! +auto={C(0/0,-4,Loyalty)}:name(-4: ultimate) all(creature[dragon]|mybattlefield) transforms((,newability[target(player) dynamicability])) oneshot +text=0: Reveal the top card of your library and put it into your hand. Sarkhan the Mad deals damage to himself equal to that card's converted mana cost. -- -2: Target creature's controller sacrifices it, then that player puts a 5/5 red Dragon creature token with flying onto the battlefield. -- -4: Each Dragon creature you control deals damage equal to its power to target player. +mana={3}{B}{R} +type=Planeswalker +subtype=Sarkhan +[/card] +[card] name=Sarkhan Unbroken auto=counter(0/0,9,Loyalty) auto={C(0/0,1,Loyalty)}:name(+1: Draw card add mana) draw:1 controller && transforms((,newability[activatechooseacolor add{chosencolor} activatechooseend])) forever asSorcery @@ -91688,17 +91693,6 @@ type=Planeswalker subtype=Sarkhan [/card] [card] -name=Sarkhan the Mad -auto=counter(0/0,7,loyalty) -auto={0}:name(0: reveal damage) Reveal:1 revealzone(mylibrary) revealuntil(*|mylibrary) optionone name(put in hand) target(*|reveal) moveto(myhand) optiononeend afterrevealed all(this) damage:revealedmana afterrevealedend revealend -auto={C(0/0,-2,Loyalty)}:name(-2: sacrifice) target(creature) sacrifice and!( token(Dragon,creature dragon,5/5,flying,red) targetcontroller )! -auto={C(0/0,-4,Loyalty)}:name(-4: ultimate) all(creature[dragon]|mybattlefield) transforms((,newability[target(player) dynamicability])) oneshot -text=0: Reveal the top card of your library and put it into your hand. Sarkhan the Mad deals damage to himself equal to that card's converted mana cost. -- -2: Target creature's controller sacrifices it, then that player puts a 5/5 red Dragon creature token with flying onto the battlefield. -- -4: Each Dragon creature you control deals damage equal to its power to target player. -mana={3}{B}{R} -type=Planeswalker -subtype=Sarkhan -[/card] -[card] name=Sarkhan's Rage target=creature,player|battlefield auto=damage:5 @@ -96134,7 +96128,6 @@ subtype=Shapeshifter [/card] [card] name=Shifting Sky -alias=1000 auto=chooseacolor lord(*[-land]) becomes(,chosencolor) chooseend text=As Shifting Sky enters the battlefield, choose a color. -- All nonland permanents are the chosen color. mana={2}{U} @@ -97556,7 +97549,6 @@ toughness=1 [/card] [card] name=Silhana Starfletcher -alias=1000 abilities=reach auto=activatechooseacolor {T}:add{chosencolor} activatechooseend text=Reach (This creature can block creatures with flying.) -- As Silhana Starfletcher enters the battlefield, choose a color. -- {T}: Add one mana of the chosen color to your mana pool. @@ -99583,7 +99575,6 @@ subtype=Equipment [/card] [card] name=Slag Fiend -alias=1111 anyzone=type:artifact:graveyard/type:artifact:graveyard cdaactive text=Slag Fiend's power and toughness are each equal to the number of artifact cards in all graveyards. mana={R} @@ -100732,7 +100723,6 @@ toughness=3 [/card] [card] name=Sol Grail -alias=1000 auto=chooseacolor transforms((,newability[{T}:add{chosencolor}])) forever chooseend text=As Sol Grail enters the battlefield, choose a color. -- {T}: Add one mana of the chosen color to your mana pool. mana={3} @@ -103624,7 +103614,6 @@ subtype=Aura [/card] [card] name=Splinterfright -alias=1111 abilities=trample anyzone=type:creature:mygraveyard/type:creature:mygraveyard cdaactive auto=@each my upkeep:deplete:2 controller @@ -106139,7 +106128,7 @@ toughness=3 [/card] [card] name=Street Spasm -alias=11000 +abilities=overload other={X}{X}{R}{R} name(Overload) target=creature[-flying]|opponentbattlefield auto=paidmana damage:X @@ -109363,6 +109352,17 @@ power=1 toughness=1 [/card] [card] +name=Tasigur, the Golden Fang +other={delve} name(Delve) +auto={2}{GU}{GU}:deplete:2 controller && ability$! moveto(ownerhand) notatarget(*[-land]|opponentgraveyard) !$ opponent +text=Delve (Each card you exile from your graveyard while casting this spell pays for {1}.) -- {2}{GU}{GU}: Put the top two cards of your library into your graveyard, then return a nonland card of an opponent's choice from your graveyard to your hand. +mana={5}{B} +type=Legendary Creature +subtype=Human Shaman +power=4 +toughness=5 +[/card] +[card] name=Tasigur's Cruelty auto=ability$!name(discard 2 cards) target(*|myhand) reject!$ opponent text=Delve (Each card you exile from your graveyard while casting this spell pays for {1}.) -- Each opponent discards two cards. @@ -109676,7 +109676,6 @@ type=Legendary Land [/card] [card] name=Teferi's Moat -alias=1000 auto=chooseacolor lord(creature[chosencolor&-flying]|opponentBattlefield) cantattack chooseend text=As Teferi's Moat enters the battlefield, choose a color. -- Creatures of the chosen color without flying can't attack you. mana={3}{W}{U} @@ -109767,7 +109766,7 @@ toughness=2 [/card] [card] name=Teleportal -alias=11000 +abilities=overload other={3}{U}{R} name(Overload) target=creature|mybattlefield auto=paidmana 1/0 @@ -110427,7 +110426,6 @@ type=Artifact [/card] [card] name=Terravore -alias=1111 abilities=trample anyzone=type:land:graveyard/type:land:graveyard cdaactive text=Trample -- Terravore's power and toughness are each equal to the number of land cards in all graveyards. @@ -116278,7 +116276,6 @@ type=Artifact [/card] [card] name=Umbra Stalker -alias=1111 anyzone=type:manab:mygraveyard/type:manab:mygraveyard cdaactive text=Chroma - Umbra Stalker's power and toughness are each equal to the number of black mana symbols in the mana costs of cards in your graveyard. mana={4}{B}{B}{B} @@ -118001,7 +117998,7 @@ subtype=Aura [/card] [card] name=Vandalblast -alias=11000 +abilities=overload other={4}{R} name(Overload) target=artifact|opponentbattlefield auto=overload destroy all(artifact|opponentbattlefield) @@ -118395,7 +118392,7 @@ toughness=2 [/card] [card] name=Vedalken Shackles -alias=50120 +abilities=shackler auto={2}{T}:shackle target(creature[power<=type:island:mybattlefield]) auto=@each my untap restriction{canuntap}:may untap text=You may choose not to untap Vedalken Shackles during your untap step. -- {2}, {T}: Gain control of target creature with power less than or equal to the number of Islands you control for as long as Vedalken Shackles remains tapped. @@ -120461,7 +120458,6 @@ toughness=2 [/card] [card] name=Voice of All -alias=1000 abilities=flying auto=chooseacolor transforms((,newability[protection from(*[chosencolor])],newability[0/0])) forever chooseend text=Flying (This creature can't be blocked except by creatures with flying or reach.) -- As Voice of All enters the battlefield, choose a color. -- Voice of All has protection from the chosen color. (It can't be blocked, targeted, dealt damage, or enchanted by anything of the chosen color.) @@ -122343,7 +122339,6 @@ toughness=1 [/card] [card] name=Ward Sliver -alias=1000 auto=chooseacolor transforms((,newability[lord(sliver) protection from(*[chosencolor])])) forever chooseend text=As Ward Sliver enters the battlefield, choose a color. -- All Slivers have protection from the chosen color. mana={4}{W} @@ -123048,7 +123043,7 @@ type=Artifact [/card] [card] name=Weapon Surge -alias=11000 +abilities=overload other={1}{R} name(Overload) target=creature|mybattlefield auto=paidmana 1/0 @@ -124336,7 +124331,7 @@ toughness=2 [/card] [card] name=Willow Satyr -alias=50120 +abilities=shackler auto={T}:shackle target(creature[legendary]) auto=@each my untap restriction{canuntap}:may untap text=You may choose not to untap Willow Satyr during your untap step. -- {T}: Gain control of target legendary creature for as long as you control Willow Satyr and Willow Satyr remains tapped. @@ -126579,6 +126574,16 @@ power=3 toughness=3 [/card] [card] +name=Yisan, the Wanderer Bard +auto={2}{G}{T}{C(0/0,1,Verse)}:name(search creature) Reveal:type:*:mylibrary revealzone(mylibrary) revealtype(*[creature]|mylibrary) optionone target(creature[manacost=counter{0%0.1.Verse}]|reveal) moveto(mybattlefield) and!( all(*|reveal) moveto(mylibrary) )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(mylibrary) and!( all(*|reveal) moveto(mylibrary) )! optiontwoend afterrevealed shuffle afterrevealedend revealend +text={2}{G}, {T}, Put a verse counter on Yisan, the Wanderer Bard: Search your library for a creature card with converted mana cost equal to the number of verse counters on Yisan, put it onto the battlefield, then shuffle your library. +mana={2}{G} +type=Legendary Creature +subtype=Human Rogue +power=2 +toughness=3 +[/card] +[card] name=Yoke of the Damned target=creature auto=@movedTo(graveyard) from(creature|battlefield):destroy @@ -126741,6 +126746,17 @@ power=2 toughness=1 [/card] [card] +name=Zameck Guildmage +auto={G}{U}:name(1/1 counters) emblem transforms((,newability[@movedto(creature|myBattlefield):all(trigger[to]) counter(1/1.1)])) ueot +auto={G}{U}{C(1/1,-1),*|mybattlefield}:name(remove a 1/1 counter) draw:1 +text={G}{U}: This turn, each creature you control enters the battlefield with an additional +1/+1 counter on it. -- {G}{U}, Remove a +1/+1 counter from a creature you control: Draw a card. +mana={G}{U} +type=Creature +subtype=Elf Wizard +power=2 +toughness=2 +[/card] +[card] name=Zanam Djinn abilities=flying auto=this(variable{commonblue}>0) -2/-2 diff --git a/projects/mtg/bin/Res/sets/primitives/unsupported.txt b/projects/mtg/bin/Res/sets/primitives/unsupported.txt index a59319600..853855c96 100644 --- a/projects/mtg/bin/Res/sets/primitives/unsupported.txt +++ b/projects/mtg/bin/Res/sets/primitives/unsupported.txt @@ -4005,15 +4005,6 @@ mana={2}{B} type=Sorcery [/card] [card] -name=Delver of Secrets -text=At the beginning of your upkeep, look at the top card of your library. You may reveal that card. If an instant or sorcery card is revealed this way, transform Delver of Secrets. -mana={U} -type=Creature -subtype=Human Wizard -power=1 -toughness=1 -[/card] -[card] name=Dementia Sliver text=All Slivers have "{T}: Name a card. Target opponent reveals a card at random from his or her hand. If it's the named card, that player discards it. Activate this ability only during your turn." mana={3}{U}{B} @@ -17769,15 +17760,6 @@ mana={1}{W} type=Sorcery [/card] [card] -name=Tasigur, the Golden Fang -text=Delve (Each card you exile from your graveyard while casting this spell pays for {1}.) -- {2}{GU}{GU}: Put the top two cards of your library into your graveyard, then return a nonland card of an opponent's choice from your graveyard to your hand. -mana={5}{B} -type=Legendary Creature -subtype=Human Shaman -power=4 -toughness=5 -[/card] -[card] name=Task Mage Assembly text=When there are no creatures on the battlefield, sacrifice Task Mage Assembly. -- {2}: Task Mage Assembly deals 1 damage to target creature. Any player may activate this ability but only any time he or she could cast a sorcery. mana={2}{R} @@ -20322,24 +20304,6 @@ power=3 toughness=6 [/card] [card] -name=Yisan, the Wanderer Bard -text={2}{G}, {T}, Put a verse counter on Yisan, the Wanderer Bard: Search your library for a creature card with converted mana cost equal to the number of verse counters on Yisan, put it onto the battlefield, then shuffle your library. -mana={2}{G} -type=Legendary Creature -subtype=Human Rogue -power=2 -toughness=3 -[/card] -[card] -name=Yixlid Jailer -text=Cards in graveyards lose all abilities. -mana={1}{B} -type=Creature -subtype=Zombie Wizard -power=2 -toughness=1 -[/card] -[card] name=Yosei, the Morning Star text=Flying -- When Yosei, the Morning Star dies, target player skips his or her next untap step. Tap up to five target permanents that player controls. mana={4}{W}{W} @@ -20382,15 +20346,6 @@ power=3 toughness=3 [/card] [card] -name=Zameck Guildmage -text={G}{U}: This turn, each creature you control enters the battlefield with an additional +1/+1 counter on it. -- {G}{U}, Remove a +1/+1 counter from a creature you control: Draw a card. -mana={G}{U} -type=Creature -subtype=Elf Wizard -power=2 -toughness=2 -[/card] -[card] name=Zealous Inquisitor text={1}{W}: The next 1 damage that would be dealt to Zealous Inquisitor this turn is dealt to target creature instead. mana={2}{W} diff --git a/projects/mtg/include/MTGCardInstance.h b/projects/mtg/include/MTGCardInstance.h index cefa5a5d4..1bd266b1b 100644 --- a/projects/mtg/include/MTGCardInstance.h +++ b/projects/mtg/include/MTGCardInstance.h @@ -168,6 +168,7 @@ public: MTGCardInstance * myPair; MTGCardInstance * createSnapShot(); MTGCardInstance * storedSourceCard; + MTGCardInstance * shackled; MTGCardInstance * isDefenser(); int initAttackersDefensers(); MTGCardInstance * getNextOpponent(MTGCardInstance * previous=NULL); diff --git a/projects/mtg/include/MTGDefinitions.h b/projects/mtg/include/MTGDefinitions.h index e1bdca9cb..caea4b9d5 100644 --- a/projects/mtg/include/MTGDefinitions.h +++ b/projects/mtg/include/MTGDefinitions.h @@ -248,11 +248,13 @@ class Constants CANTPAYLIFE = 126, CANTBESACRIFIED = 127, SKULK = 128, - MENACE = 129, - NOSOLO = 130,//cant attack alone - MUSTBLOCK = 131,//blocks each turn - DETHRONE = 132, - NB_BASIC_ABILITIES = 133, + MENACE = 129, + NOSOLO = 130,//cant attack alone + MUSTBLOCK = 131,//blocks each turn + DETHRONE = 132, + OVERLOAD = 133, + SHACKLER = 134, + NB_BASIC_ABILITIES = 135, RARITY_S = 'S', //Special Rarity RARITY_M = 'M', //Mythics diff --git a/projects/mtg/src/AIPlayerBaka.cpp b/projects/mtg/src/AIPlayerBaka.cpp index 5dabaa2fa..2da274c4c 100644 --- a/projects/mtg/src/AIPlayerBaka.cpp +++ b/projects/mtg/src/AIPlayerBaka.cpp @@ -2438,7 +2438,7 @@ int AIPlayerBaka::computeActions() cd.SetExclusionColor(Constants::MTG_COLOR_LAND); MTGCardInstance *freecard = cd.match(game->graveyard); int canCastCard = game->playRestrictions->canPutIntoZone(freecard, game->inPlay); - if (freecard && (canCastCard == PlayRestriction::CAN_PLAY) && freecard->has(Constants::PAYZERO) && freecard->has(Constants::CANPLAYFROMGRAVEYARD) && (freecard->getIncreasedManaCost()->getConvertedCost() < 1) && (freecard->alias != 1111)) + if (freecard && (canCastCard == PlayRestriction::CAN_PLAY) && freecard->has(Constants::PAYZERO) && freecard->has(Constants::CANPLAYFROMGRAVEYARD) && (freecard->getIncreasedManaCost()->getConvertedCost() < 1) && (!freecard->isCDA)) { MTGAbility * castFreeCard = observer->mLayers->actionLayer()->getAbility(MTGAbility::PAYZERO_COST); AIAction * aa = NEW AIAction(this, castFreeCard, freecard); //TODO putinplay action @@ -2453,7 +2453,7 @@ int AIPlayerBaka::computeActions() cd.SetExclusionColor(Constants::MTG_COLOR_LAND); MTGCardInstance *freecard = cd.match(game->exile); int canCastCard = game->playRestrictions->canPutIntoZone(freecard, game->inPlay); - if (freecard && (canCastCard == PlayRestriction::CAN_PLAY) && freecard->has(Constants::PAYZERO) && freecard->has(Constants::CANPLAYFROMEXILE) && (freecard->getIncreasedManaCost()->getConvertedCost() < 1) && (freecard->alias != 1111)) + if (freecard && (canCastCard == PlayRestriction::CAN_PLAY) && freecard->has(Constants::PAYZERO) && freecard->has(Constants::CANPLAYFROMEXILE) && (freecard->getIncreasedManaCost()->getConvertedCost() < 1) && (!freecard->isCDA)) { MTGAbility * castFreeCard = observer->mLayers->actionLayer()->getAbility(MTGAbility::PAYZERO_COST); AIAction * aa = NEW AIAction(this, castFreeCard, freecard); //TODO putinplay action diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index a5b673f3a..2516a18be 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -6531,6 +6531,8 @@ void AShackle::resolveShackle() previousController->game->putInZone(_target, _target->currentZone, source->controller()->game->inPlay); Shackled = _target; + source->shackled = Shackled; + Shackled->shackled = source; } } @@ -6538,14 +6540,19 @@ void AShackle::returntoOwner(MTGCardInstance* _target) { MTGCardInstance * cardToReturn = _target; if(!cardToReturn) { + if (source) + source->shackled = NULL; this->forceDestroy = 1; return; } if(previousController && cardToReturn->isInPlay(game)) { + cardToReturn->shackled = NULL; cardToReturn->controller()->game->putInZone(_target, _target->currentZone, previousController->game->inPlay); } + if (source) + source->shackled = NULL; this->forceDestroy = 1; Shackled = NULL; return; diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index a4f18ed41..389427db7 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -274,8 +274,32 @@ void CardGui::Render() { if(cv->mHasFocus) { - highlightborder->SetColor(ARGB(200,57,28,248)); + highlightborder->SetColor(ARGB(200,57,28,248)); + renderer->RenderQuad(highlightborder.get(), actX, actY, actT, (30 * actZ + 1) / 16, 43 * actZ / 16); + } + } + } + if(card->shackled && card->shackled->isInPlay(game) && highlightborder) + { + if(mHasFocus) + { + if(card->has(Constants::SHACKLER)) + highlightborder->SetColor(ARGB(200,7,98,248)); + else + highlightborder->SetColor(ARGB(200,57,28,248)); + renderer->RenderQuad(highlightborder.get(), actX, actY, actT, (30 * actZ + 1) / 16, 43 * actZ / 16); + } + if(CardView* cv = dynamic_cast(card->shackled->view)) + { + if(cv->mHasFocus) + { + if(!card->shackled->has(Constants::SHACKLER)) + highlightborder->SetColor(ARGB(200,7,98,248)); + else + highlightborder->SetColor(ARGB(200,57,28,248)); + + renderer->RenderQuad(highlightborder.get(), actX, actY, actT, (30 * actZ + 1) / 16, 43 * actZ / 16); } } } @@ -386,7 +410,7 @@ void CardGui::Render() buff = "C"; //if(card->has(Constants::PAYZERO)) //buff += "Z"; - if(card->alias == 1000) + if(card->chooseacolor >= 1) { if(card->chooseacolor == 1) buff += "\n-Green"; @@ -1114,7 +1138,7 @@ void CardGui::RenderBig(MTGCard* card, const Pos& pos, bool thumb, bool noborder string cardsetname = setlist[card->setId].c_str(); if(!noborder) { - if(cardsetname == "2ED"||cardsetname == "RV"||cardsetname == "4ED"||cardsetname == "5ED"||cardsetname == "6ED"||cardsetname == "7ED"||cardsetname == "8ED"||cardsetname == "9ED"||cardsetname == "CHR") + if(cardsetname == "2ED"||cardsetname == "RV"||cardsetname == "4ED"||cardsetname == "5ED"||cardsetname == "6ED"||cardsetname == "7ED"||cardsetname == "8ED"||cardsetname == "9ED"||cardsetname == "CHR"||cardsetname == "DM") { //like white border renderer->FillRoundRect(x-92,pos.actY-130, (scale * quad->mWidth)-10, (scale * quad->mHeight)-11, 9.0f,ARGB(255,248,248,255)); diff --git a/projects/mtg/src/DeckMenu.cpp b/projects/mtg/src/DeckMenu.cpp index 898b83215..7d32a4727 100644 --- a/projects/mtg/src/DeckMenu.cpp +++ b/projects/mtg/src/DeckMenu.cpp @@ -122,7 +122,7 @@ void DeckMenu::RenderDeckManaColors() if (mSelectedDeck &&displayDeckMana) { string deckManaColors = mSelectedDeck->getColorIndex().c_str(); - if (deckManaColors.size() == 6) + if (deckManaColors.size() >= 6) { // due to space constraints don't display icons for colorless mana. for( int colorIdx = Constants::MTG_COLOR_GREEN; colorIdx < Constants::MTG_COLOR_WASTE; ++colorIdx ) diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 1c89311f5..c8d800eec 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -211,6 +211,7 @@ void MTGCardInstance::initMTGCI() storedCard = NULL; storedSourceCard = NULL; myPair = NULL; + shackled = NULL; miracle = false; countTrini = 0; imprintedCards.clear(); diff --git a/projects/mtg/src/MTGDefinitions.cpp b/projects/mtg/src/MTGDefinitions.cpp index 7c3178dcc..16aa9eebf 100644 --- a/projects/mtg/src/MTGDefinitions.cpp +++ b/projects/mtg/src/MTGDefinitions.cpp @@ -159,11 +159,13 @@ const char* Constants::MTGBasicAbilities[] = { "combattoughness", "cantpaylife", "cantbesacrified", - "skulk", - "menace", - "nosolo", - "mustblock", - "dethrone", + "skulk", + "menace", + "nosolo", + "mustblock", + "dethrone", + "overload", + "shackler" }; map Constants::MTGBasicAbilitiesMap; diff --git a/projects/mtg/src/MTGGameZones.cpp b/projects/mtg/src/MTGGameZones.cpp index cdbb8aed2..d8b4940d1 100644 --- a/projects/mtg/src/MTGGameZones.cpp +++ b/projects/mtg/src/MTGGameZones.cpp @@ -951,7 +951,7 @@ void MTGInPlay::untapAll() { MTGCardInstance * card = cards[i]; card->setUntapping(); - if (!card->basicAbilities[(int)Constants::DOESNOTUNTAP] && card->alias != 50120) + if (!card->basicAbilities[(int)Constants::DOESNOTUNTAP] && !card->basicAbilities[(int)Constants::SHACKLER]) { if (card->frozen < 1) { @@ -961,7 +961,6 @@ void MTGInPlay::untapAll() { card->frozen = 0; } - } } } diff --git a/projects/mtg/src/MTGRules.cpp b/projects/mtg/src/MTGRules.cpp index 753cf3a1f..d9f77b0e6 100644 --- a/projects/mtg/src/MTGRules.cpp +++ b/projects/mtg/src/MTGRules.cpp @@ -687,7 +687,7 @@ PermanentAbility(observer, _id) int MTGAlternativeCostRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana) { - if (card->alias == 11000) + if (card->has(Constants::OVERLOAD)) return 0;//overload has its own rule if(!card->getManaCost()->getAlternative()) return 0; @@ -1410,7 +1410,7 @@ MTGAlternativeCostRule(observer, _id) int MTGOverloadRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana) { - if (card->alias != 11000) + if (!card->has(Constants::OVERLOAD)) return 0; Player * player = game->currentlyActing(); ManaCost * cost = NEW ManaCost(card->model->data->getManaCost()->getAlternative());