From f1bc268f586e81273cc078bf1a1208981ad2446a Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 13 Aug 2016 10:55:58 +0800 Subject: [PATCH] add mycastingzone & oppcastingzone to simplify code --- .../bin/Res/sets/primitives/borderline.txt | 13 ++ projects/mtg/bin/Res/sets/primitives/mtg.txt | 220 +++++++++--------- projects/mtg/src/CardGui.cpp | 4 +- projects/mtg/src/TargetChooser.cpp | 14 ++ 4 files changed, 139 insertions(+), 112 deletions(-) diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index a6adce1f8..574744bc9 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -318,6 +318,19 @@ mana={G}{W} type=Instant [/card] [card] +name=Silvergill Adept +otherrestriction=type(*[merfolk]|myhand)~lessthan~2 +other={4}{U} +restriction=type(*[merfolk]|myhand)~morethan~1 +auto=draw:1 +text=As an additional cost to cast Silvergill Adept, reveal a Merfolk card from your hand or pay {3}. -- When Silvergill Adept enters the battlefield, draw a card. +mana={1}{U} +type=Creature +subtype=Merfolk Wizard +power=2 +toughness=1 +[/card] +[card] name=Staggershock target=creature,player auto=damage:2 diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index 7d99daf72..45664ca62 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -2066,7 +2066,7 @@ toughness=3 [/card] [card] name=Alabaster Leech -auto=lord(*[white]|myhand,mylibrary,mygraveyard,myexile) altercost(white, +1) +auto=lord(*[white]|mycastingzone) altercost(white, +1) text=White spells you cast cost {W} more to cast. mana={W} type=Creature @@ -3222,7 +3222,7 @@ type=Land [/card] [card] name=Andradite Leech -auto=lord(*[black]|myhand,mylibrary,mygraveyard,myexile) altercost(black,+1) +auto=lord(*[black]|mycastingzone) altercost(black,+1) auto={B}:1/1 text=Black spells you cast cost {B} more to cast. -- {B}: Andradite Leech gets +1/+1 until end of turn. mana={2}{B} @@ -3708,7 +3708,7 @@ subtype=Aura name=Animar, Soul of Elements abilities=protection from white,protection from black auto=@movedTo(creature|mystack):counter(1/1,1) -auto=thisforeach(counter{1/1,1}) lord(creature|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, -1) +auto=thisforeach(counter{1/1,1}) lord(creature|mycastingzone) altercost(colorless, -1) text=Protection from white and from black -- Whenever you cast a creature spell, put a +1/+1 counter on Animar, Soul of Elements. -- Creature spells you cast cost 1 less to cast for each +1/+1 counter on Animar. mana={U}{R}{G} type=Legendary Creature @@ -4394,8 +4394,8 @@ type=Enchantment [/card] [card] name=Arcane Melee -auto=lord(instant|hand,library,graveyard,exile) altercost(colorless,-2) -auto=lord(sorcery|hand,library,graveyard,exile) altercost(colorless,-2) +auto=lord(instant|nonbattlezone) altercost(colorless,-2) +auto=lord(sorcery|nonbattlezone) altercost(colorless,-2) text=Instant and sorcery spells cost {2} less to cast. mana={4}{U} type=Enchantment @@ -6334,8 +6334,8 @@ subtype=Aura [/card] [card] name=Aura of Silence -auto=lord(artifact|opponenthand,opponentlibrary,opponentgraveyard,opponentexile) altercost(colorless, +2) -auto=lord(enchantment|opponenthand,opponentlibrary,opponentgraveyard,opponentexile) altercost(colorless, +2) +auto=lord(artifact|oppcastingzone) altercost(colorless, +2) +auto=lord(enchantment|oppcastingzone) altercost(colorless, +2) auto={S}:destroy target(artifact,enchantment) text=Artifact and enchantment spells your opponents cast cost {2} more to cast. -- Sacrifice Aura of Silence: Destroy target artifact or enchantment. mana={1}{W}{W} @@ -7829,7 +7829,7 @@ toughness=2 [/card] [card] name=Ballyrush Banneret -auto=lord(*[soldier;kithkin]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, -1) +auto=lord(*[soldier;kithkin]|mycastingzone) altercost(colorless, -1) text=Kithkin spells and Soldier spells you cast cost {1} less to cast. mana={1}{W} type=Creature @@ -12990,7 +12990,7 @@ toughness=7 [/card] [card] name=Bosk Banneret -auto=lord(*[treefolk;shaman]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, -1) +auto=lord(*[treefolk;shaman]|mycastingzone) altercost(colorless, -1) text=Treefolk spells and Shaman spells you cast cost {1} less to cast. mana={1}{G} type=Creature @@ -13780,7 +13780,7 @@ type=Enchantment [/card] [card] name=Brighthearth Banneret -auto=lord(*[elemental;warrior]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, -1) +auto=lord(*[elemental;warrior]|mycastingzone) altercost(colorless, -1) autohand={1}{R}{discard}:counter(1/1,1) target(creature) text=Elemental spells and Warrior spells you cast cost {1} less to cast. -- Reinforce 1 - {1}{R} ({1}{R}, Discard this card: Put a +1/+1 counter on target creature.) mana={1}{R} @@ -16777,7 +16777,7 @@ toughness=3 [/card] [card] name=Centaur Omenreader -auto=this(tapped) lord(*|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, -2) ueot +auto=this(tapped) lord(*|mycastingzone) altercost(colorless, -2) ueot auto=@untapped(this):all(*|myhand) moveto(myhand) text=As long as Centaur Omenreader is tapped, creature spells you cast cost {2} less to cast. mana={3}{G} @@ -17898,8 +17898,8 @@ type=Instant [/card] [card] name=Chill -auto=lord(*[red]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, +2) -auto=lord(*[red]|opponenthand,opponentlibrary,opponentgraveyard,opponentexile) altercost(colorless, +2) +auto=lord(*[red]|mycastingzone) altercost(colorless, +2) +auto=lord(*[red]|oppcastingzone) altercost(colorless, +2) text=Red spells cost {2} more to cast. mana={1}{U} type=Enchantment @@ -19258,11 +19258,11 @@ auto=choice name(Creature) counter(0/0,1,CloudKeyC) all(this) auto=choice name(Enchantment) counter(0/0,1,CloudKeyE) all(this) auto=choice name(Instant) counter(0/0,1,CloudKeyI) all(this) auto=choice name(Sorcery) counter(0/0,1,CloudKeyS) all(this) -auto=this(counter{0/0.1.CloudKeyA}) lord(Artifact|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) -auto=this(counter{0/0.1.CloudKeyC}) lord(Creature|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) -auto=this(counter{0/0.1.CloudKeyE}) lord(Enchantment|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) -auto=this(counter{0/0.1.CloudKeyI}) lord(Instant|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) -auto=this(counter{0/0.1.CloudKeyS}) lord(Sorcery|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=this(counter{0/0.1.CloudKeyA}) lord(Artifact|mycastingzone) altercost(colorless,-1) +auto=this(counter{0/0.1.CloudKeyC}) lord(Creature|mycastingzone) altercost(colorless,-1) +auto=this(counter{0/0.1.CloudKeyE}) lord(Enchantment|mycastingzone) altercost(colorless,-1) +auto=this(counter{0/0.1.CloudKeyI}) lord(Instant|mycastingzone) altercost(colorless,-1) +auto=this(counter{0/0.1.CloudKeyS}) lord(Sorcery|mycastingzone) altercost(colorless,-1) text=As Cloud Key enters the battlefield, choose artifact, creature, enchantment, instant, or sorcery. -- Spells you cast of the chosen type cost {1} less to cast. mana={3} type=Artifact @@ -24250,7 +24250,7 @@ toughness=1 [/card] [card] name=Daru Warchief -auto=lord(soldier|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, -1) +auto=lord(soldier|mycastingzone) altercost(colorless, -1) auto=lord(soldier|myBattlefield) 1/2 text=Soldier spells you cast cost {1} less to cast. -- Soldier creatures you control get +1/+2. mana={2}{W}{W} @@ -26392,7 +26392,7 @@ toughness=1 [/card] [card] name=Derelor -auto=lord(*[black]|myhand,mylibrary,mygraveyard,myexile) altercost(black, +1) +auto=lord(*[black]|mycastingzone) altercost(black, +1) text=Black spells you cast cost {B} more to cast. mana={3}{B} type=Creature @@ -28813,7 +28813,7 @@ toughness=5 [/card] [card] name=Dragonlord's Servant -auto=lord(dragon|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, -1) +auto=lord(dragon|mycastingzone) altercost(colorless, -1) text=Dragon spells you cast cost {1} less to cast. mana={1}{R} type=Creature @@ -28917,7 +28917,7 @@ toughness=2 [/card] [card] name=Dragonspeaker Shaman -auto=lord(dragon|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) +auto=lord(dragon|mycastingzone) altercost(colorless,-2) text=Dragon spells you cast cost {2} less to cast. mana={1}{R}{R} type=Creature @@ -31335,8 +31335,8 @@ subtype=Aura [/card] [card] name=Edgewalker -auto=lord(cleric|myhand,mylibrary,mygraveyard,myexile) altercost(white,-1) -auto=lord(cleric|myhand,mylibrary,mygraveyard,myexile) altercost(black, -1) +auto=lord(cleric|mycastingzone) altercost(white,-1) +auto=lord(cleric|mycastingzone) altercost(black, -1) text=Cleric spells you cast cost {W}{B} less to cast. This effect reduces only the amount of colored mana you pay. (For example, if you cast a Cleric spell with mana cost {1}{W}, it costs {1} to cast.) mana={1}{W}{B} type=Creature @@ -32737,7 +32737,7 @@ toughness=1 [/card] [card] name=Emerald Medallion -auto=lord(*[green]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(*[green]|mycastingzone) altercost(colorless,-1) text=Green spells you cast cost {1} less to cast. mana={2} type=Artifact @@ -34435,7 +34435,7 @@ type=Artifact [/card] [card] name=Etherium Sculptor -auto=lord(artifact|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(artifact|mycastingzone) altercost(colorless,-1) text=Artifact spells you cast cost {1} less to cast. mana={1}{U} type=Artifact Creature @@ -35222,7 +35222,7 @@ mana={3}{W} [/card] [card] name=Eye of Ugin -auto=lord(eldrazi[iscolorless]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) +auto=lord(eldrazi[colorless]|mycastingzone) altercost(colorless,-2) auto={7}{T}:moveTo(myhand) target(creature[iscolorless]|myLibrary) text=Colorless Eldrazi spells you cast cost {2} less to cast. -- {7}, {T}: Search your library for a colorless creature card, reveal it, and put it into your hand. Then shuffle your library. type=Legendary Land @@ -36739,7 +36739,7 @@ subtype=Aura [/card] [card] name=Feroz's Ban -auto=lord(creature|hand,library,graveyard,exile) altercost(colorless,+2) +auto=lord(creature|nonbattlezone) altercost(colorless,+2) text=Creature spells cost {2} more to cast. mana={6} type=Artifact @@ -40120,7 +40120,7 @@ toughness=2 [card] name=Frogtosser Banneret abilities=haste -auto=lord(*[goblin;rogue]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, -1) +auto=lord(*[goblin;rogue]|mycastingzone) altercost(colorless, -1) text=Haste -- Goblin spells and Rogue spells you cast cost {1} less to cast. mana={1}{B} type=Creature @@ -43445,8 +43445,8 @@ toughness=3 [/card] [card] name=Glowrider -auto=lord(*[-creature]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,+1) -auto=lord(*[-creature]|opponenthand,opponentlibrary,opponentgraveyard,opponentexile) altercost(colorless, +1) +auto=lord(*[-creature]|mycastingzone) altercost(colorless,+1) +auto=lord(*[-creature]|oppcastingzone) altercost(colorless, +1) text=Noncreature spells cost {1} more to cast. mana={2}{W} type=Creature @@ -43922,7 +43922,7 @@ toughness=4 [/card] [card] name=Goblin Electromancer -auto=lord(*[instant;sorcery]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(*[instant;sorcery]|mycastingzone) altercost(colorless,-1) text=Instant and sorcery spells you cast cost {1} less to cast. mana={U}{R} type=Creature @@ -44649,7 +44649,7 @@ toughness=3 [/card] [card] name=Goblin Warchief -auto=lord(goblin|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(goblin|mycastingzone) altercost(colorless,-1) auto=lord(goblin|myBattlefield) haste text=Goblin spells you cast cost {1} less to cast. -- Goblin creatures you control have haste. mana={1}{R}{R} @@ -45395,9 +45395,9 @@ toughness=2 [/card] [card] name=Grand Arbiter Augustin IV -auto=lord(*[white]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) -auto=lord(*[blue]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) -auto=lord(*|opponenthand,opponentlibrary,opponentgraveyard,opponentexile) altercost( colorless,+1) +auto=lord(*[white]|mycastingzone) altercost(colorless,-1) +auto=lord(*[blue]|mycastingzone) altercost(colorless,-1) +auto=lord(*|oppcastingzone) altercost( colorless,+1) text=White spells you cast cost {1} less to cast. -- Blue spells you cast cost {1} less to cast. -- Spells your opponents cast cost {1} more to cast. mana={2}{W}{U} type=Legendary Creature @@ -49009,7 +49009,7 @@ toughness=3 [card] name=Heartless Summoning auto=lord(creature|myBattlefield) -1/-1 -auto=lord(creature|myhand,mylibrary,mygraveyard,myexile) altercost( colorless,-2) +auto=lord(creature|mycastingzone) altercost( colorless,-2) text=Creature spells you cast cost {2} less to cast. -- Creatures you control get -1/-1 mana={1}{B} type=Enchantment @@ -49643,7 +49643,7 @@ toughness=1 [/card] [card] name=Helm of Awakening -auto=lord(*|hand,library,graveyard,exile) altercost(colorless,-1) +auto=lord(*|nonbattlezone) altercost(colorless,-1) text=Spells cost {1} less to cast. mana={2} type=Artifact @@ -49785,7 +49785,7 @@ toughness=4 [/card] [card] name=Herald of the Pantheon -auto=lord(enchantment|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, -1) +auto=lord(enchantment|mycastingzone) altercost(colorless, -1) auto=@movedto(enchantment|mystack):choice life:1 controller text=Enchantment spells you cast cost {1} less to cast. -- Whenever you cast an enchantment spell, you gain 1 life. mana={1}{G} @@ -49813,7 +49813,7 @@ toughness=3 name=Herald of War abilities=flying auto=@combat(attacking) source(this):counter(1/1,1) -auto=thisforeach(counter{1/1,1}) lord(*[angel;human]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, -1) +auto=thisforeach(counter{1/1,1}) lord(*[angel;human]|mycastingzone) altercost(colorless, -1) text=Flying -- Whenever Herald of War attacks, put a +1/+1 counter on it. -- Angel spells and Human spells you cast cost {1} less to cast for each +1/+1 counter on Herald of War. mana={3}{W}{W} type=Creature @@ -49916,7 +49916,7 @@ toughness=3 [/card] [card] name=Hero of Iroas -auto=lord(aura|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(aura|mycastingzone) altercost(colorless,-1) auto=@targeted(this) from(*[instant;sorcery;enchantment]|myhand,mygraveyard):counter(1/1,1) text=Aura spells you cast cost 1 less to cast. -- Heroic -- Whenever you cast a spell that targets Hero of Iroas, put a +1/+1 counter on Hero of Iroas. mana={1}{W} @@ -50182,7 +50182,7 @@ toughness=1 [/card] [card] name=High Seas -auto=lord(creature[red;green]|hand,library,graveyard,exile) altercost(colorless,+1) +auto=lord(creature[red;green]|nonbattlezone) altercost(colorless,+1) text=Red creature spells and green creature spells cost {1} more to cast. mana={2}{U} type=Enchantment @@ -54362,7 +54362,7 @@ toughness=2 [/card] [card] name=Irini Sengir -auto=lord(enchantment[white;green]|hand,library,graveyard,exile) altercost(colorless,+1) +auto=lord(enchantment[white;green]|nonbattlezone) altercost(colorless,+1) text=White enchantment spells and green enchantment spells cost {2} more to cast. mana={2}{B}{B} type=Legendary Creature @@ -55045,7 +55045,7 @@ type=Artifact [/card] [card] name=Jade Leech -auto=lord(*[green]|myhand,mylibrary,mygraveyard,myexile) altercost(green,+1) +auto=lord(*[green]|mycastingzone) altercost(green,+1) text=Green spells you cast cost {G} more to cast. mana={2}{G}{G} type=Creature @@ -55421,7 +55421,7 @@ type=Artifact [/card] [card] name=Jet Medallion -auto=lord(*[black]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(*[black]|mycastingzone) altercost(colorless,-1) text=Black spells you cast cost {1} less to cast. mana={2} type=Artifact @@ -59523,7 +59523,7 @@ toughness=0 [/card] [card] name=Krallenhorde Howler -auto=lord(creature|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, -1) +auto=lord(creature|mycastingzone) altercost(colorless, -1) auto=@each upkeep restriction{lastturn(*|stack)~morethan~1}:flip(Duskwatch Recruiter) text=Creature spells you cast cost {1} less to cast. -- At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Howler. type=Creature @@ -59746,7 +59746,7 @@ toughness=2 [/card] [card] name=Krosan Drover -auto=lord(creature[manacost>=6]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) +auto=lord(creature[manacost>=6]|mycastingzone) altercost(colorless,-2) text=Creature spells you cast with converted mana cost 6 or more cost {2} less to cast. mana={3}{G} type=Creature @@ -59806,7 +59806,7 @@ toughness=5 [card] name=Krosan Warchief auto={1}{G}:regenerate target(beast) -auto=lord(beast|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(beast|mycastingzone) altercost(colorless,-1) text=Beast spells you cast cost {1} less to cast. -- {1}{G}: Regenerate target Beast. mana={2}{G} type=Creature @@ -62908,7 +62908,7 @@ type=Artifact [/card] [card] name=Lodestone Golem -auto=lord(*[-artifact]|hand,library,graveyard,exile) altercost(colorless,+1) +auto=lord(*[-artifact]|nonbattlezone) altercost(colorless,+1) text=Nonartifact spells cost {1} more to cast. mana={4} type=Artifact Creature @@ -62989,7 +62989,7 @@ toughness=2 [/card] [card] name=Long-Forgotten Gohei -auto=lord(arcane|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(arcane|mycastingzone) altercost(colorless,-1) auto=lord(spirit|myBattlefield) 1/1 text=Arcane spells you cast cost {1} less to cast. -- Spirit creatures you control get +1/+1. mana={3} @@ -65051,8 +65051,8 @@ toughness=1 [/card] [card] name=Mana Matrix -auto=lord(instant|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) -auto=lord(enchantment|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) +auto=lord(instant|mycastingzone) altercost(colorless,-2) +auto=lord(enchantment|mycastingzone) altercost(colorless,-2) text=Instant and enchantment spells you cast cost up to {2} less to cast. mana={6} type=Artifact @@ -69351,7 +69351,7 @@ toughness=4 [/card] [card] name=Mistform Warchief -auto=lord(creature[share!types!]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) chooseend +auto=lord(creature[share!types!]|mycastingzone) altercost(colorless,-1) chooseend auto={T}:activatechooseatype all(this) becomes(removecreaturesubtypes) && becomes(chosentype) ueot activatechooseend text=Creature spells you cast that share a creature type with Mistform Warchief cost {1} less to cast. -- {T}: Mistform Warchief becomes the creature type of your choice until end of turn. mana={2}{U} @@ -73747,7 +73747,7 @@ toughness=1 [/card] [card] name=Nightscape Familiar -auto=lord(*[blue;red]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(*[blue;red]|mycastingzone) altercost(colorless,-1) auto={1}{B}:regenerate text=Blue spells and red spells you cast cost {1} less to cast. -- {1}{B}: Regenerate Nightscape Familiar. mana={1}{B} @@ -78501,7 +78501,7 @@ toughness=7 [/card] [card] name=Pearl Medallion -auto=lord(*[white]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(*[white]|mycastingzone) altercost(colorless,-1) text=White spells you cast cost {1} less to cast. mana={2} type=Artifact @@ -78918,23 +78918,23 @@ subtype=Trap [/card] [card] name=Pernicious Deed -auto={0}{S}:name(X = 0) destroy all(*[-land;manacost=0]) -auto={1}{S}:name(X = 1) destroy all(*[-land;manacost<=1]) -auto={2}{S}:name(X = 2) destroy all(*[-land;manacost<=2]) -auto={3}{S}:name(X = 3) destroy all(*[-land;manacost<=3]) -auto={4}{S}:name(X = 4) destroy all(*[-land;manacost<=4]) -auto={5}{S}:name(X = 5) destroy all(*[-land;manacost<=5]) -auto={6}{S}:name(X = 6) destroy all(*[-land;manacost<=6]) -auto={7}{S}:name(X = 7) destroy all(*[-land;manacost<=7]) -auto={8}{S}:name(X = 8) destroy all(*[-land;manacost<=8]) -auto={9}{S}:name(X = 9) destroy all(*[-land;manacost<=9]) -auto={10}{S}:name(X = 10) destroy all(*[-land;manacost<=10]) -auto={11}{S}:name(X = 11) destroy all(*[-land;manacost<=11]) -auto={12}{S}:name(X = 12) destroy all(*[-land;manacost<=12]) -auto={13}{S}:name(X = 13) destroy all(*[-land;manacost<=13]) -auto={14}{S}:name(X = 14) destroy all(*[-land;manacost<=14]) -auto={15}{S}:name(X = 15) destroy all(*[-land;manacost<=15]) -auto={16}{S}:name(X = 16) destroy all(*[-land;manacost<=16]) +auto={0}{S}:name(X = 0) destroy all(artifact,creature,enchantment[manacost=0]) +auto={1}{S}:name(X = 1) destroy all(artifact,creature,enchantment[manacost<=1]) +auto={2}{S}:name(X = 2) destroy all(artifact,creature,enchantment[manacost<=2]) +auto={3}{S}:name(X = 3) destroy all(artifact,creature,enchantment[manacost<=3]) +auto={4}{S}:name(X = 4) destroy all(artifact,creature,enchantment[manacost<=4]) +auto={5}{S}:name(X = 5) destroy all(artifact,creature,enchantment[manacost<=5]) +auto={6}{S}:name(X = 6) destroy all(artifact,creature,enchantment[manacost<=6]) +auto={7}{S}:name(X = 7) destroy all(artifact,creature,enchantment[manacost<=7]) +auto={8}{S}:name(X = 8) destroy all(artifact,creature,enchantment[manacost<=8]) +auto={9}{S}:name(X = 9) destroy all(artifact,creature,enchantment[manacost<=9]) +auto={10}{S}:name(X = 10) destroy all(artifact,creature,enchantment[manacost<=10]) +auto={11}{S}:name(X = 11) destroy all(artifact,creature,enchantment[manacost<=11]) +auto={12}{S}:name(X = 12) destroy all(artifact,creature,enchantment[manacost<=12]) +auto={13}{S}:name(X = 13) destroy all(artifact,creature,enchantment[manacost<=13]) +auto={14}{S}:name(X = 14) destroy all(artifact,creature,enchantment[manacost<=14]) +auto={15}{S}:name(X = 15) destroy all(artifact,creature,enchantment[manacost<=15]) +auto={16}{S}:name(X = 16) destroy all(artifact,creature,enchantment[manacost<=16]) text={X}, Sacrifice Pernicious Deed: Destroy each artifact, creature, and enchantment with converted mana cost X or less. mana={1}{B}{G} type=Enchantment @@ -80725,7 +80725,7 @@ type=Sorcery [/card] [card] name=Planar Gate -auto=lord(creature|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) +auto=lord(creature|mycastingzone) altercost(colorless,-2) text=Creature spells you cast cost up to {2} less to cast. mana={6} type=Artifact @@ -84152,8 +84152,8 @@ toughness=3 [/card] [card] name=Ragemonger -auto=lord(minotaur|myhand,mylibrary,mygraveyard,myexile) altercost(black,-1) -auto=lord(minotaur|myhand,mylibrary,mygraveyard,myexile) altercost(red,-1) +auto=lord(minotaur|mycastingzone) altercost(black,-1) +auto=lord(minotaur|mycastingzone) altercost(red,-1) text=Minotaur spells you cast cost BlackRed less to cast. This effect reduces only the amount of colored mana you pay. (For example, if you cast a Minotaur spell with mana cost 2Red, it costs 2 to cast.) mana={1}{B}{R} type=Creature @@ -89756,7 +89756,7 @@ toughness=3 [card] name=Ruby Leech abilities=first strike -auto=lord(*[red]|myhand,mylibrary,mygraveyard,myexile) altercost(red,+1) +auto=lord(*[red]|mycastingzone) altercost(red,+1) text=First strike -- Red spells you cast cost {R} more to cast. mana={1}{R} type=Creature @@ -89766,7 +89766,7 @@ toughness=2 [/card] [card] name=Ruby Medallion -auto=lord(*[red]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(*[red]|mycastingzone) altercost(colorless,-1) text=Red spells you cast cost {1} less to cast. mana={2} type=Artifact @@ -91586,7 +91586,7 @@ toughness=4 [card] name=Sapphire Leech abilities=flying -auto=lord(*[blue]|myhand,mylibrary,mygraveyard,myexile) altercost(blue,+1) +auto=lord(*[blue]|mycastingzone) altercost(blue,+1) text=Flying -- Blue spells you cast cost {U} more to cast. mana={1}{U} type=Creature @@ -91596,7 +91596,7 @@ toughness=2 [/card] [card] name=Sapphire Medallion -auto=lord(*[blue]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(*[blue]|mycastingzone) altercost(colorless,-1) text=Blue spells you cast cost {1} less to cast. mana={2} type=Artifact @@ -94518,20 +94518,20 @@ auto=choice name(Sorcery) moveTo(myexile) notatarget(sorcery|myhand) && counter( auto=choice name(Tribal Instant) moveTo(myexile) notatarget(instant[tribal]|myhand) && counter(0/0,1,TribalInstant) all(this) auto=choice name(Tribal Sorcery) moveTo(myexile) notatarget(sorcery[tribal]|myhand) && counter(0/0,1,TribalSorcery) all(this) auto=choice name(cancel) donothing -auto=this(counter{0/0.1.Artifact}) lord(artifact|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) -auto=this(counter{0/0.1.ArtifactCreature}) lord(artifact[-creature]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) -auto=this(counter{0/0.1.ArtifactCreature}) lord(creature[-artifact]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) -auto=this(counter{0/0.1.ArtifactCreature}) lord(creature[artifact]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2 ) -auto=this(counter{0/0.1.Creature}) lord(creature|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) -auto=this(counter{0/0.1.Enchantment}) lord(enchantment|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) -auto=this(counter{0/0.1.Instant}) lord(instant|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) -auto=this(counter{0/0.1.Sorcery}) lord(sorcery|myhand,mylibrary,mygraveyard,myexile) altercost( colorless, -2 ) -auto=this(counter{0/0.1.TribalInstant}) lord(tribal[-instant]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) -auto=this(counter{0/0.1.TribalInstant}) lord(instant[-tribal]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) -auto=this(counter{0/0.1.TribalInstant}) lord(instant[tribal]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2 ) -auto=this(counter{0/0.1.TribalSorcery}) lord(tribal[-sorcery]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) -auto=this(counter{0/0.1.TribalSorcery}) lord(sorcery[-tribal]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) -auto=this(counter{0/0.1.TribalSorcery}) lord(sorcery[tribal]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) +auto=this(counter{0/0.1.Artifact}) lord(artifact|mycastingzone) altercost(colorless,-2) +auto=this(counter{0/0.1.ArtifactCreature}) lord(artifact[-creature]|mycastingzone) altercost(colorless,-2) +auto=this(counter{0/0.1.ArtifactCreature}) lord(creature[-artifact]|mycastingzone) altercost(colorless,-2) +auto=this(counter{0/0.1.ArtifactCreature}) lord(creature[artifact]|mycastingzone) altercost(colorless,-2 ) +auto=this(counter{0/0.1.Creature}) lord(creature|mycastingzone) altercost(colorless,-2) +auto=this(counter{0/0.1.Enchantment}) lord(enchantment|mycastingzone) altercost(colorless,-2) +auto=this(counter{0/0.1.Instant}) lord(instant|mycastingzone) altercost(colorless,-2) +auto=this(counter{0/0.1.Sorcery}) lord(sorcery|mycastingzone) altercost( colorless, -2 ) +auto=this(counter{0/0.1.TribalInstant}) lord(tribal[-instant]|mycastingzone) altercost(colorless,-2) +auto=this(counter{0/0.1.TribalInstant}) lord(instant[-tribal]|mycastingzone) altercost(colorless,-2) +auto=this(counter{0/0.1.TribalInstant}) lord(instant[tribal]|mycastingzone) altercost(colorless,-2 ) +auto=this(counter{0/0.1.TribalSorcery}) lord(tribal[-sorcery]|mycastingzone) altercost(colorless,-2) +auto=this(counter{0/0.1.TribalSorcery}) lord(sorcery[-tribal]|mycastingzone) altercost(colorless,-2) +auto=this(counter{0/0.1.TribalSorcery}) lord(sorcery[tribal]|mycastingzone) altercost(colorless,-2) text=Imprint - When Semblance Anvil enters the battlefield, you may exile a nonland card from your hand. -- Spells you cast that share a card type with the exiled card cost {2} less to cast. mana={3} type=Artifact @@ -102671,7 +102671,7 @@ toughness=3 [/card] [card] name=Sphere of Resistance -auto=lord(*|hand,library,graveyard,exile) altercost(colorless,+1) +auto=lord(*|nonbattlezone) altercost(colorless,+1) text=Spells cost {1} more to cast. mana={2} type=Artifact @@ -104132,7 +104132,7 @@ type=Artifact [card] name=Squeeze text=Sorcery spells cost {3} more to cast. -auto=lord(sorcery|hand,library,graveyard,exile) altercost(colorless,+3) +auto=lord(sorcery|nonbattlezone) altercost(colorless,+3) mana={3}{U} type=Enchantment [/card] @@ -105229,7 +105229,7 @@ toughness=1 [/card] [card] name=Stinkdrinker Daredevil -auto=lord(giant|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) +auto=lord(giant|mycastingzone) altercost(colorless,-2) text=Giant spells you cast cost {2} less to cast. mana={2}{R} type=Creature @@ -105417,7 +105417,7 @@ type=Sorcery [/card] [card] name=Stone Calendar -auto=lord(*|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(*|mycastingzone) altercost(colorless,-1) text=Spells you cast cost up to {1} less to cast. mana={5} type=Artifact @@ -105744,7 +105744,7 @@ toughness=2 [card] name=Stonybrook Banneret abilities=islandwalk -auto=lord(*[merfolk;wizard]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, -1) +auto=lord(*[merfolk;wizard]|mycastingzone) altercost(colorless, -1) text=Islandwalk -- Merfolk spells and Wizard spells you cast cost {1} less to cast. mana={1}{U} type=Creature @@ -105993,7 +105993,7 @@ toughness=1 [card] name=Stormscape Familiar abilities=flying -auto=lord(*[white;black]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(*[white;black]|mycastingzone) altercost(colorless,-1) text=Flying -- White spells and black spells you cast cost {1} less to cast. mana={1}{U} type=Creature @@ -107379,7 +107379,7 @@ toughness=1 [card] name=Sunscape Familiar abilities=defender -auto=lord(*[green;blue]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(*[green;blue]|mycastingzone) altercost(colorless,-1) text=Defender (This creature can't attack.) -- Green spells and blue spells you cast cost {1} less to cast. mana={1}{W} type=Creature @@ -110839,8 +110839,8 @@ toughness=2 [card] name=Thalia, Guardian of Thraben abilities=first strike -auto=lord(*[-creature]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,+1) -auto=lord(*[-creature]|opponenthand,opponentlibrary,opponentgraveyard,opponentexile) altercost(colorless, +1) +auto=lord(*[-creature]|mycastingzone) altercost(colorless,+1) +auto=lord(*[-creature]|oppcastingzone) altercost(colorless, +1) text=First Strike -- Noncreature spells cost {1} more to cast. mana={1}{W} type=Legendary Creature @@ -111416,7 +111416,7 @@ toughness=7 [/card] [card] name=Thorn of Amethyst -auto=lord(*[-creature]|hand,library,graveyard,exile) altercost(colorless,+1) +auto=lord(*[-creature]|nonbattlezone) altercost(colorless,+1) text=Noncreature spells cost {1} more to cast. mana={2} type=Artifact @@ -111498,7 +111498,7 @@ toughness=1 [/card] [card] name=Thornscape Familiar -auto=lord(*[red;white]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(*[red;white]|mycastingzone) altercost(colorless,-1) text=Red spells and white spells you cast cost {1} less to cast. mana={1}{G} type=Creature @@ -112445,7 +112445,7 @@ toughness=1 [card] name=Thunderscape Familiar abilities=first strike -auto=lord(*[black;green]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-1) +auto=lord(*[black;green]|mycastingzone) altercost(colorless,-1) text=First strike -- Black spells and green spells you cast cost {1} less to cast. mana={1}{R} type=Creature @@ -116590,7 +116590,7 @@ toughness=2 [card] name=Undead Warchief auto=lord(zombie|myBattlefield) 2/1 -auto=lord(zombie|myhand,mylibrary,mygraveyard,myexile) altercost( colorless,-1) +auto=lord(zombie|mycastingzone) altercost( colorless,-1) text=Zombie spells you cast cost {1} less to cast. -- Zombie creatures you control get +2/+1. mana={2}{B}{B} type=Creature @@ -117575,7 +117575,7 @@ subtype=Urza's [/card] [card] name=Urza's Filter -auto=lord(*[multicolor]|hand,library,graveyard,exile) altercost(colorless,-2) +auto=lord(*[multicolor]|nonbattlezone) altercost(colorless,-2) text=Multicolored spells cost up to {2} less to cast. mana={4} type=Artifact @@ -117589,7 +117589,7 @@ type=Sorcery [/card] [card] name=Urza's Incubator -auto=chooseatype lord(creature[chosentype]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless,-2) chooseend +auto=chooseatype lord(creature[chosentype]|mycastingzone) altercost(colorless,-2) chooseend text=As Urza's Incubator enters the battlefield, choose a creature type. -- Creature spells of the chosen type cost {2} less to cast. mana={3} type=Artifact @@ -121252,7 +121252,7 @@ subtype=Vraska [card] name=Vryn Wingmare abilities=flying -auto=lord(*[-creature]|hand,library,graveyard,exile) altercost(colorless, +1) +auto=lord(*[-creature]|nonbattlezone) altercost(colorless, +1) text=Flying -- Noncreature spells cost {1} more to cast. mana={2}{W} type=Creature @@ -122463,7 +122463,7 @@ toughness=2 [card] name=Warden of Evos Isle abilities=flying -auto=lord(creature[flying]|myhand,mylibrary,mygraveyard,myexile) altercost(colorless, -1) +auto=lord(creature[flying]|mycastingzone) altercost(colorless, -1) text=Flying. -- Creature spells with flying you cast cost 1 less to cast. mana={2}{U} type=Creature diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index cb8cf5954..91570066e 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -147,7 +147,7 @@ void CardGui::Render() bool alternate = true; JQuadPtr quad = game? game->getResourceManager()->RetrieveCard(card, CACHE_THUMB):WResourceManager::Instance()->RetrieveCard(card, CACHE_THUMB); - if(card && !card->hasCopiedToken && !card->isToken && card->name != card->model->data->name) + if(card && !card->isToken && card->name != card->model->data->name) { MTGCard * fcard = MTGCollection()->getCardByName(card->name); quad = game->getResourceManager()->RetrieveCard(fcard, CACHE_THUMB); @@ -1143,7 +1143,7 @@ void CardGui::RenderBig(MTGCard* card, const Pos& pos, bool thumb, bool noborder JQuadPtr quad = thumb ? WResourceManager::Instance()->RetrieveCard(card, RETRIEVE_THUMB) : WResourceManager::Instance()->RetrieveCard(card); MTGCardInstance * kcard = dynamic_cast(card); - if(kcard && !kcard->hasCopiedToken && !kcard->isToken && kcard->name != kcard->model->data->name) + if(kcard && !kcard->isToken && kcard->name != kcard->model->data->name) { MTGCard * fcard = MTGCollection()->getCardByName(kcard->name); quad = WResourceManager::Instance()->RetrieveCard(fcard); diff --git a/projects/mtg/src/TargetChooser.cpp b/projects/mtg/src/TargetChooser.cpp index 908a7145b..9ad256d50 100644 --- a/projects/mtg/src/TargetChooser.cpp +++ b/projects/mtg/src/TargetChooser.cpp @@ -202,6 +202,20 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta zones[nbzones++] = MTGGameZone::MY_EXILE; zones[nbzones++] = MTGGameZone::OPPONENT_EXILE; } + else if (zoneName.compare("mycastingzone") == 0) + { + zones[nbzones++] = MTGGameZone::MY_GRAVEYARD; + zones[nbzones++] = MTGGameZone::MY_LIBRARY; + zones[nbzones++] = MTGGameZone::MY_HAND; + zones[nbzones++] = MTGGameZone::MY_EXILE; + } + else if (zoneName.compare("oppcastingzone") == 0) + { + zones[nbzones++] = MTGGameZone::OPPONENT_GRAVEYARD; + zones[nbzones++] = MTGGameZone::OPPONENT_LIBRARY; + zones[nbzones++] = MTGGameZone::OPPONENT_HAND; + zones[nbzones++] = MTGGameZone::OPPONENT_EXILE; + } else { int zone = MTGGameZone::zoneStringToId(zoneName);