diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index c28e9d613..f587d21c0 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -1,6 +1,6 @@ #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 programatically so the other comments are removed except for AUTO_DEFINE - kevlahnota 03-09-2017 +#I sorted this programatically so the other comments are removed except for AUTO_DEFINE - kevlahnota 03-16-2017 [card] name=Abandon Reason target=creature @@ -30558,6 +30558,17 @@ power=5 toughness=4 [/card] [card] +name=Dodecapod +abilities=discardtoplaybyopponent +alias=109736 +text=If a spell or ability an opponent controls causes you to discard Dodecapod, put it onto the battlefield with two +1/+1 counters on it instead of putting it into your graveyard. +mana={4} +type=Artifact Creature +subtype=Golem +power=3 +toughness=3 +[/card] +[card] name=Dogged Hunter auto={T}:destroy target(creature[token]) text={T}: Destroy target creature token. @@ -31472,7 +31483,7 @@ type=Sorcery name=Dragon-Style Twins abilities=double strike auto=@movedTo(*[-creature]|mystack):1/1 ueot -text=Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.) -- Whenever Jeskai Elder deals combat damage to a player, you may draw a card. If you do, discard a card. +text=Double strike -- Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.) mana={3}{R}{R} type=Creature subtype=Human Monk @@ -40290,6 +40301,14 @@ power=2 toughness=2 [/card] [card] +name=Field of Dreams +abilities=showfromtoplibrary,showopponenttoplibrary +auto=@movedTo(other enchantment[world]|battlefield):sacrifice all(this) +text=Players play with the top card of their libraries revealed. +mana={U} +type=World Enchantment +[/card] +[card] name=Field of Reality target=creature auto=cantbeblockedby(spirit) @@ -51510,6 +51529,16 @@ power=1 toughness=1 [/card] [card] +name=Guerrilla Tactics +target=creature,player +auto=damage:2 +autograveyard=while(restriction{discardbyopponent}) choice damage:4 target(creature,player) +autoexile=while(restriction{discardbyopponent}) choice damage:4 target(creature,player) +text=Guerrilla Tactics deals 2 damage to target creature or player. -- When a spell or ability an opponent controls causes you to discard Guerrilla Tactics, Guerrilla Tactics deals 4 damage to target creature or player. +mana={1}{R} +type=Instant +[/card] +[card] name=Guided Passage auto=ability$! notatarget(creature|opponentlibrary) moveto(ownerhand) !$ opponent auto=ability$! notatarget(land|opponentlibrary) moveto(ownerhand) !$ opponent @@ -68883,6 +68912,16 @@ power=2 toughness=2 [/card] [card] +name=Loxodon Smiter +abilities=nofizzle,discardtoplaybyopponent +text=Loxodon Smiter can't be countered. -- If a spell or ability an opponent controls causes you to discard Loxodon Smiter, put it onto the battlefield instead of putting it into your graveyard. +mana={1}{G}{W} +type=Creature +subtype=Elephant Soldier +power=4 +toughness=4 +[/card] +[card] name=Loxodon Stalwart abilities=Vigilance auto={W}:0/1 @@ -70795,6 +70834,16 @@ power=1 toughness=1 [/card] [card] +name=Mangara's Blessing +auto=life:5 controller +autograveyard=while(restriction{discardbyopponent}) life:2 controller +autograveyard=@each my endofturn restriction{discardbyopponent}:moveto(ownerhand) +autoexile=while(restriction{discardbyopponent}) life:2 controller +text=You gain 5 life. -- When a spell or ability an opponent controls causes you to discard Mangara's Blessing, you gain 2 life, and you return Mangara's Blessing from your graveyard to your hand at the beginning of the next end step. +mana={2}{W} +type=Instant +[/card] +[card] name=Mangara's Equity auto=upcost[{1}{W}] sacrifice auto=choice name(choose black) transforms((,newability[@damageof(player) from(creature[black]|*):damage:thatmuch all(trigger[from])],newability[@damaged(creature[white]|mybattlefield) from(creature[black]|*):damage:thatmuch all(trigger[from])])) forever @@ -73577,6 +73626,15 @@ mana={5} type=Artifact [/card] [card] +name=Metrognome +autograveyard=while(restriction{discardbyopponent}) token(Gnome,Artifact Creature Gnome,1/1)*4 +autoexile=while(restriction{discardbyopponent}) token(Gnome,Artifact Creature Gnome,1/1)*4 +auto={4}{T}:token(Gnome,Artifact Creature Gnome,1/1) +text=When a spell or ability an opponent controls causes you to discard Metrognome, put four 1/1 colorless Gnome artifact creature tokens onto the battlefield. -- {4}, {T}: Put a 1/1 colorless Gnome artifact creature token onto the battlefield. +mana={4} +type=Artifact +[/card] +[card] name=Metropolis Sprite abilities=flying auto={U}:1/-1 ueot @@ -81853,6 +81911,17 @@ power=4 toughness=4 [/card] [card] +name=Obstinate Baloth +abilities=discardtoplaybyopponent +auto=life:4 controller +text=When Obstinate Baloth enters the battlefield, you gain 4 life. -- If a spell or ability an opponent controls causes you to discard Obstinate Baloth, put it onto the battlefield instead of putting it into your graveyard. +mana={2}{G}{G} +type=Creature +subtype=Beast +power=4 +toughness=4 +[/card] +[card] name=Obstinate Familiar auto=replacedraw ability$!name(skip or draw) choice name(Skip Draw) donothing ueot _ choice draw:1 noreplace!$ controller text=If you would draw a card, you may skip that draw instead. @@ -89636,6 +89705,16 @@ type=Enchantment subtype=Aura [/card] [card] +name=Psychic Purge +target=creature,player +auto=damage:1 +autograveyard=while(restriction{discardbyopponent}) life:-5 opponent +autoexile=while(restriction{discardbyopponent}) life:-5 opponent +text=Psychic Purge deals 1 damage to target creature or player. -- When a spell or ability an opponent controls causes you to discard Psychic Purge, that player loses 5 life. +mana={U} +type=Sorcery +[/card] +[card] name=Psychic Spear target=player aicode=activate reject notatarget(*[spirit;arcane]|targetedpersonshand) @@ -90529,6 +90608,18 @@ mana={2}{B} type=Enchantment [/card] [card] +name=Quagnoth +abilities=split second +autograveyard=while(restriction{discardbyopponent}) choice moveto(ownerhand) +autoexile=while(restriction{discardbyopponent}) choice moveto(ownerhand) +text=Split second (As long as this spell is on the stack, players can't cast spells or activate abilities that aren't mana abilities.) -- Shroud (This permanent can't be the target of spells or abilities.) -- When a spell or ability an opponent controls causes you to discard Quagnoth, return it to your hand. +mana={5}{G} +type=Creature +subtype=Beast +power=4 +toughness=5 +[/card] +[card] name=Quarantine Field auto=counter(0/0,xx,Isolation) auto=(blink)forsrc target(*[-land]|opponentbattlefield) @@ -96255,7 +96346,7 @@ toughness=1 name=Riverwheel Aerialists abilities=flying auto=@movedTo(*[-creature]|mystack):1/1 ueot -text=Flying -- Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.) -- Whenever Jeskai Elder deals combat damage to a player, you may draw a card. If you do, discard a card. +text=Flying -- Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.) mana={5}{U} type=Creature subtype=Djinn Monk @@ -98909,6 +99000,16 @@ power=3 toughness=6 [/card] [card] +name=Sand Golem +autograveyard=while(restriction{discardbyopponent}) moveto(ownerbattlefield) and!( transforms((,newability[phaseaction[endofturn once sourceinplay] counter(1/1) all(this)])) forever)! +text=When a spell or ability an opponent controls causes you to discard Sand Golem, return Sand Golem from your graveyard to the battlefield with a +1/+1 counter on it at the beginning of the next end step. +mana={5} +type=Artifact Creature +subtype=Golem +power=3 +toughness=3 +[/card] +[card] name=Sand Silos abilities=doesnotuntap auto=tap(noevent) @@ -134464,6 +134565,17 @@ power=3 toughness=4 [/card] [card] +name=Wilt-Leaf Liege +abilities=discardtoplaybyopponent +auto=lord(other creature[green]|mybattlefield) 1/1 +text=Other green creatures you control get +1/+1. -- Other white creatures you control get +1/+1. -- If a spell or ability an opponent controls causes you to discard Wilt-Leaf Liege, put it onto the battlefield instead of putting it into your graveyard. +mana={1}{GW}{GW}{GW} +type=Creature +subtype=Elf Knight +power=4 +toughness=4 +[/card] +[card] name=Wily Bandar auto={2}{G}:indestructible ueot text={2}{G}: Wily Bandar gains indestructible until end of turn. (Damage and effects that say "destroy" don't destroy it.) @@ -134943,6 +135055,14 @@ mana={1}{G}{G} type=Sorcery [/card] [card] +name=Winter's Night +auto=lord(land[snow]) transforms((,newability[@tappedformana(this):frozen],newability[producecolor:land],newability[producecolor:green],newability[producecolor:blue],newability[producecolor:red],newability[producecolor:black],newability[producecolor:white])) +auto=@movedTo(other enchantment[world]|battlefield):sacrifice all(this) +text=Whenever a player taps a snow land for mana, that player adds one mana to his or her mana pool of any type that land produced. That land doesn't untap during its controller's next untap step. +mana={R}{G}{W} +type=World Enchantment +[/card] +[card] name=Wipe Away target=*|battlefield auto=moveto(ownerhand) @@ -135135,6 +135255,15 @@ power=1 toughness=1 [/card] [card] +name=Witch Hunt +abilities=nolifegain,nolifegainopponent +auto=@each my upkeep:damage:4 controller +auto=@each my end:moveto(opponentbattlefield) all(this) +text=Players can't gain life. -- At the beginning of your upkeep, Witch Hunt deals 4 damage to you. -- At the beginning of your end step, target opponent chosen at random gains control of Witch Hunt. +mana={4}{R} +type=Enchantment +[/card] +[card] name=Witchbane Orb abilities=playershroud auto=destroy all(mycurses) @@ -135343,6 +135472,16 @@ power=2 toughness=2 [/card] [card] +name=Wizened Snitches +abilities=flying,showfromtoplibrary,showopponenttoplibrary +text=Flying -- Players play with the top card of their libraries revealed. +mana={3}{U} +type=Creature +subtype=Faerie Rogue +power=1 +toughness=3 +[/card] +[card] name=Woebearer abilities=fear auto=@combatdamaged(player) from(this):may moveto(myhand) target(creature|myGraveyard) @@ -135446,6 +135585,13 @@ power=4 toughness=4 [/card] [card] +name=Wolfcaller's Howl +auto=@each my upkeep restriction{type(*|opponenthand)~morethan~3}:token(Wolf,Creature Wolf,2/2,green) +text=At the beginning of your upkeep, put X 2/2 green Wolf creature tokens onto the battlefield, where X is the number of your opponents with four or more cards in hand. +mana={3}{G} +type=Enchantment +[/card] +[card] name=Wolf type=Creature subtype=Wolf diff --git a/projects/mtg/bin/Res/sets/primitives/unsupported.txt b/projects/mtg/bin/Res/sets/primitives/unsupported.txt index 8edb5689d..678c5f4db 100644 --- a/projects/mtg/bin/Res/sets/primitives/unsupported.txt +++ b/projects/mtg/bin/Res/sets/primitives/unsupported.txt @@ -1205,13 +1205,6 @@ power=1 toughness=3 [/card] [card] -name=Bear Umbra -text=Enchant creature -- Enchanted creature gets +2/+2 and has "Whenever this creature attacks, untap all lands you control." -- Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) -mana={2}{G}{G} -type=Enchantment -subtype=Aura -[/card] -[card] name=Bearer of Silence text=Devoid (This card has no color.) -- When you cast Bearer of Silence, you may pay {1}{C}. If you do, target opponent sacrifices a creature. ({C} represents colorless mana.) -- Flying -- Bearer of Silence can't block. mana={1}{B} @@ -1522,13 +1515,6 @@ mana={2}{R} type=Enchantment [/card] [card] -name=Boar Umbra -text=Enchant creature -- Enchanted creature gets +3/+3. -- Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) -mana={2}{G} -type=Enchantment -subtype=Aura -[/card] -[card] name=Bog Hoodlums text=Bog Hoodlums can't block. -- When Bog Hoodlums enters the battlefield, clash with an opponent. If you win, put a +1/+1 counter on Bog Hoodlums. (Each clashing player reveals the top card of his or her library, then puts that card on the top or bottom. A player wins if his or her card had a higher converted mana cost.) mana={5}{B} @@ -1847,16 +1833,6 @@ mana={4}{B} type=Instant [/card] [card] -name=Brontotherium -abilities=trample -text=Trample -- Provoke (When this attacks, you may have target creature defending player controls untap and block it if able.) -mana={4}{G}{G} -type=Creature -subtype=Beast -power=5 -toughness=3 -[/card] -[card] name=Bronze Bombshell text=When a player other than Bronze Bombshell's owner controls it, that player sacrifices it. If the player does, Bronze Bombshell deals 7 damage to him or her. mana={4} @@ -2915,12 +2891,6 @@ power=2 toughness=2 [/card] [card] -name=Cloudform -text=When Cloudform enters the battlefield, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Cloudform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -- Enchanted creature has flying and hexproof. -mana={1}{U}{U} -type=Enchantment -[/card] -[card] name=Coalition Flag text=Enchant creature you control -- Enchanted creature is a Flagbearer. -- While choosing targets as part of casting a spell or activating an ability, your opponents must choose at least one Flagbearer on the battlefield if able. mana={W} @@ -3416,13 +3386,6 @@ type=Enchantment subtype=Aura [/card] [card] -name=Crab Umbra -text=Enchant creature -- {2}{U}: Untap enchanted creature. -- Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) -mana={U} -type=Enchantment -subtype=Aura -[/card] -[card] name=Crackdown Construct text=Whenever you activate an ability of an artifact or creature that isn't a mana ability, Crackdown Construct gets +1/+1 until end of turn. mana={4} @@ -3493,15 +3456,6 @@ mana={3}{B} type=Enchantment [/card] [card] -name=Crested Craghorn -text=Haste -- Provoke (When this attacks, you may have target creature defending player controls untap and block it if able.) -mana={4}{R} -type=Creature -subtype=Goat Beast -power=4 -toughness=1 -[/card] -[card] name=Crime // Punishment text=Put target creature or enchantment card from an opponent's graveyard onto the battlefield under your control. -- // -- Destroy each artifact, creature, and enchantment with converted mana cost X. mana={3}{W}{B} // {X}{B}{G} @@ -4170,15 +4124,6 @@ mana={3}{W} type=Instant [/card] [card] -name=Deftblade Elite -text=Provoke (When this attacks, you may have target creature defending player controls untap and block it if able.) -- {1}{W}: Prevent all combat damage that would be dealt to and dealt by Deftblade Elite this turn. -mana={W} -type=Creature -subtype=Human Soldier -power=1 -toughness=1 -[/card] -[card] name=Degavolver text=Kicker {1}{B} and/or {R} (You may pay an additional {1}{B} and/or {R} as you cast this spell.) -- If Degavolver was kicked with its {1}{B} kicker, it enters the battlefield with two +1/+1 counters on it and with "Pay 3 life: Regenerate Degavolver." -- If Degavolver was kicked with its {R} kicker, it enters the battlefield with a +1/+1 counter on it and with first strike. mana={1}{W} @@ -4584,15 +4529,6 @@ mana={1}{B} type=Sorcery [/card] [card] -name=Dodecapod -text=If a spell or ability an opponent controls causes you to discard Dodecapod, put it onto the battlefield with two +1/+1 counters on it instead of putting it into your graveyard. -mana={4} -type=Artifact Creature -subtype=Golem -power=3 -toughness=3 -[/card] -[card] name=Domesticated Hydra text={X}{G}{G}{G}: Monstrosity X. (If this creature isn't monstrous, put X +1/+1 counters on it and it becomes monstrous.) -- As long as Domesticated Hydra is monstrous, it has trample. mana={2}{G}{G} @@ -4776,13 +4712,6 @@ mana={U}{U} type=Sorcery [/card] [card] -name=Drake Umbra -text=Enchant creature -- Enchanted creature gets +3/+3 and has flying. -- Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) -mana={4}{U} -type=Enchantment -subtype=Aura -[/card] -[card] name=Dralnu, Lich Lord text=If damage would be dealt to Dralnu, Lich Lord, sacrifice that many permanents instead. -- {T}: Target instant or sorcery card in your graveyard gains flashback until end of turn. The flashback cost is equal to its mana cost. (You may cast that card from your graveyard for its flashback cost. Then exile it.) mana={3}{U}{B} @@ -5006,20 +4935,6 @@ type=Plane subtype=Belenon [/card] [card] -name=Eel Umbra -text=Flash (You may cast this spell any time you could cast an instant.) -- Enchant creature -- Enchanted creature gets +1/+1. -- Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) -mana={1}{U} -type=Enchantment -subtype=Aura -[/card] -[card] -name=Eland Umbra -text=Enchant creature -- Enchanted creature gets +0/+4. -- Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) -mana={1}{W} -type=Enchantment -subtype=Aura -[/card] -[card] name=Elderwood Scion abilities=trample,lifelink text=Trample, lifelink -- Spells you cast that target Elderwood Scion cost {2} less to cast. -- Spells your opponents cast that target Elderwood Scion cost {2} more to cast. @@ -5409,12 +5324,6 @@ power=6 toughness=6 [/card] [card] -name=Ethereal Ambush -text=Manifest the top two cards of your library. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -mana={3}{G}{U} -type=Instant -[/card] -[card] name=Eureka text=Starting with you, each player may put a permanent card from his or her hand onto the battlefield. Repeat this process until no one puts a card onto the battlefield. mana={2}{G}{G} @@ -5779,13 +5688,6 @@ mana={R} type=Instant [/card] [card] -name=Felidar Umbra -text=Enchant creature -- Enchanted creature has lifelink. -- {1}{W}: Attach Felidar Umbra to target creature you control. -- Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) -mana={1}{W} -type=Enchantment -subtype=Aura -[/card] -[card] name=Fell the Mighty text=Destroy all creatures with power greater than target creature's power. mana={4}{W} @@ -5807,15 +5709,6 @@ power=0 toughness=0 [/card] [card] -name=Feral Throwback -text=Amplify 2 (As this creature enters the battlefield, put two +1/+1 counters on it for each Beast card you reveal in your hand.) -- Provoke (When this attacks, you may have target creature defending player controls untap and block it if able.) -mana={4}{G}{G} -type=Creature -subtype=Beast -power=3 -toughness=3 -[/card] -[card] name=Ferropede abilities=unblockable text=Ferropede is unblockable. -- Whenever Ferropede deals combat damage to a player, you may remove a counter from target permanent. @@ -5841,12 +5734,6 @@ power=2 toughness=4 [/card] [card] -name=Field of Dreams -text=Players play with the top card of their libraries revealed. -mana={U} -type=World Enchantment -[/card] -[card] name=Fields of Summer text=Whenever a player casts a spell, that player may gain 2 life. -- Whenever you roll {C}, you may gain 10 life. type=Plane @@ -5863,12 +5750,6 @@ power=3 toughness=3 [/card] [card] -name=Fierce Invocation -text=Manifest the top card of your library, then put two +1/+1 counters on it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -mana={4}{R} -type=Sorcery -[/card] -[card] name=Fiery Bombardment text=Chroma — {2}, Sacrifice a creature: Fiery Bombardment deals damage to target creature or player equal to the number of red mana symbols in the sacrificed creature's mana cost. mana={1}{R} @@ -6262,12 +6143,6 @@ mana={1}{W} type=Instant [/card] [card] -name=Formless Nurturing -text=Manifest the top card of your library, then put a +1/+1 counter on it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -mana={3}{G} -type=Sorcery -[/card] -[card] name=Fortified Area text=Wall creatures you control get +1/+0 and have banding. (Any creatures with banding, and up to one without, can attack in a band. Bands are blocked as a group. If any creatures with banding you control are blocking or being blocked by a creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.) mana={1}{W}{W} @@ -7115,15 +6990,6 @@ mana={5}{R}{R} type=Sorcery [/card] [card] -name=Goblin Grappler -text=Provoke (When this attacks, you may have target creature defending player controls untap and block it if able.) -mana={R} -type=Creature -subtype=Goblin -power=1 -toughness=1 -[/card] -[card] name=Goblin Grenadiers text=Whenever Goblin Grenadiers attacks and isn't blocked, you may sacrifice it. If you do, destroy target creature and target land. mana={3}{R} @@ -7609,12 +7475,6 @@ power=3 toughness=4 [/card] [card] -name=Guerrilla Tactics -text=Guerrilla Tactics deals 2 damage to target creature or player. -- When a spell or ability an opponent controls causes you to discard Guerrilla Tactics, Guerrilla Tactics deals 4 damage to target creature or player. -mana={1}{R} -type=Instant -[/card] -[card] name=Guiding Spirit abilities=flying text=Flying -- {T}: If the top card of target player's graveyard is a creature card, put that card on top of that player's library. @@ -8308,15 +8168,6 @@ mana={G} type=Sorcery [/card] [card] -name=Hunter Sliver -text=All Sliver creatures have provoke. (When a Sliver attacks, its controller may have target creature defending player controls untap and block it if able.) -mana={1}{R} -type=Creature -subtype=Sliver -power=1 -toughness=1 -[/card] -[card] name=Hurloon Wrangler text=Denimwalk (If defending player is wearing any clothing made of denim, this creature is unblockable.) mana={2}{R} @@ -8353,13 +8204,6 @@ power=3 toughness=3 [/card] [card] -name=Hyena Umbra -text=Enchant creature -- Enchanted creature gets +1/+1 and has first strike. -- Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) -mana={W} -type=Enchantment -subtype=Aura -[/card] -[card] name=Hymn of the Wilds text=(Start the game with this conspiracy face up in the command zone.) -- The first creature spell you cast each turn costs {1} less to cast. -- You can't cast instant or sorcery spells. type=Conspiracy @@ -8703,13 +8547,6 @@ mana={X}{R}{R}{R} type=Sorcery [/card] [card] -name=Indrik Umbra -text=Enchant creature -- Enchanted creature gets +4/+4 and has first strike, and all creatures able to block it do so. -- Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) -mana={4}{G}{W} -type=Enchantment -subtype=Aura -[/card] -[card] name=Induce Despair text=As an additional cost to cast Induce Despair, reveal a creature card from your hand. -- Target creature gets -X/-X until end of turn, where X is the revealed card's converted mana cost. mana={2}{B} @@ -9875,15 +9712,6 @@ power=3 toughness=3 [/card] [card] -name=Krosan Vorine -text=Provoke (When this attacks, you may have target creature defending player controls untap and block it if able.) -- Krosan Vorine can't be blocked by more than one creature. -mana={3}{G} -type=Creature -subtype=Cat Beast -power=3 -toughness=2 -[/card] -[card] name=Krovikan Horror text=At the beginning of the end step, if Krovikan Horror is in your graveyard with a creature card directly above it, you may return Krovikan Horror to your hand. -- {1}, Sacrifice a creature: Krovikan Horror deals 1 damage to target creature or player. mana={3}{B} @@ -10288,12 +10116,6 @@ mana={2}{W}{W} type=Enchantment [/card] [card] -name=Lightform -text=When Lightform enters the battlefield, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Lightform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -- Enchanted creature has flying and lifelink. -mana={1}{W}{W} -type=Enchantment -[/card] -[card] name=Lightning Reflexes text=You may cast Lightning Reflexes as though it had flash. If you cast it any time a sorcery couldn't have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step. -- Enchant creature -- Enchanted creature gets +1/+0 and has first strike. mana={1}{R} @@ -10536,25 +10358,6 @@ mana={1}{B}{B} type=Sorcery [/card] [card] -name=Lowland Tracker -abilities=first strike -text=First strike -- Provoke (When this attacks, you may have target creature defending player controls untap and block it if able.) -mana={4}{W} -type=Creature -subtype=Human Soldier -power=2 -toughness=2 -[/card] -[card] -name=Loxodon Smiter -text=Loxodon Smiter can't be countered. -- If a spell or ability an opponent controls causes you to discard Loxodon Smiter, put it onto the battlefield instead of putting it into your graveyard. -mana={1}{G}{W} -type=Creature -subtype=Elephant Soldier -power=4 -toughness=4 -[/card] -[card] name=Lullmage Mentor text=Whenever a spell or ability you control counters a spell, you may put a 1/1 blue Merfolk creature token onto the battlefield. -- Tap seven untapped Merfolk you control: Counter target spell. mana={1}{U}{U} @@ -10625,15 +10428,6 @@ power=1 toughness=1 [/card] [card] -name=Maelstrom Wanderer -text=Creatures you control have haste. -- Cascade, cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order. Then do it again.) -mana={5}{U}{R}{G} -type=Legendary Creature -subtype=Elemental -power=7 -toughness=5 -[/card] -[card] name=Mages' Contest text=You and target spell's controller bid life. You start the bidding with a bid of 1. In turn order, each player may top the high bid. The bidding ends if the high bid stands. The high bidder loses life equal to the high bid. If you win the bidding, counter that spell. mana={1}{R}{R} @@ -10725,13 +10519,6 @@ power=* toughness=* [/card] [card] -name=Mammoth Umbra -text=Enchant creature -- Enchanted creature gets +3/+3 and has vigilance. -- Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) -mana={4}{W} -type=Enchantment -subtype=Aura -[/card] -[card] name=Man of Measure text=As long as you're shorter than an opponent, Man of Measure has first strike and gets +0/+1. -- As long as you're taller than an opponent, Man of Measure gets +1/+0. mana={1}{W}{W} @@ -10805,12 +10592,6 @@ power=5 toughness=5 [/card] [card] -name=Mangara's Blessing -text=You gain 5 life. -- When a spell or ability an opponent controls causes you to discard Mangara's Blessing, you gain 2 life, and you return Mangara's Blessing from your graveyard to your hand at the beginning of the next end step. -mana={2}{W} -type=Instant -[/card] -[card] name=Mangara's Tome text=When Mangara's Tome enters the battlefield, search your library for five cards, exile them in a face-down pile, and shuffle that pile. Then shuffle your library. -- {2}: The next time you would draw a card this turn, instead put the top card of the exiled pile into its owner's hand. mana={5} @@ -11266,12 +11047,6 @@ mana={X}{X}{R} type=Sorcery [/card] [card] -name=Metrognome -text=When a spell or ability an opponent controls causes you to discard Metrognome, put four 1/1 colorless Gnome artifact creature tokens onto the battlefield. -- {4}, {T}: Put a 1/1 colorless Gnome artifact creature token onto the battlefield. -mana={4} -type=Artifact -[/card] -[card] name=Midnight Oil text=Midnight Oil enters the battlefield with seven hour counters on it. -- At the beginning of your draw step, draw an additional card and remove two hour counters from Midnight Oil. -- Your maximum hand size is equal to the number of hour counters on Midnight Oil. -- Whenever you discard a card, you lose 1 life. mana={2}{B}{B} @@ -12532,15 +12307,6 @@ mana={G} type=Enchantment [/card] [card] -name=Obstinate Baloth -text=When Obstinate Baloth enters the battlefield, you gain 4 life. -- If a spell or ability an opponent controls causes you to discard Obstinate Baloth, put it onto the battlefield instead of putting it into your graveyard. -mana={2}{G}{G} -type=Creature -subtype=Beast -power=4 -toughness=4 -[/card] -[card] name=Odds // Ends text=Flip a coin. If it comes up heads, counter target instant or sorcery spell. If it comes up tails, copy that spell and you may choose new targets for the copy. -- // -- Target player sacrifices two attacking creatures. mana={U}{R} // {3}{R}{W} @@ -13928,12 +13694,6 @@ type=Instant subtype=Arcane [/card] [card] -name=Psychic Purge -text=Psychic Purge deals 1 damage to target creature or player. -- When a spell or ability an opponent controls causes you to discard Psychic Purge, that player loses 5 life. -mana={U} -type=Sorcery -[/card] -[card] name=Psychic Rebuttal text=Counter target instant or sorcery spell that targets you. -- Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, you may copy the spell countered this way. You may choose new targets for the copy. mana={1}{U} @@ -14144,15 +13904,6 @@ power=0 toughness=4 [/card] [card] -name=Qarsi High Priest -text={1}{B}, {T}, Sacrifice another creature: Manifest the top card of your library. (Put that card onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -mana={B} -type=Creature -subtype=Human Cleric -power=0 -toughness=2 -[/card] -[card] name=Qasali Ambusher abilities=reach text=Reach -- If a creature is attacking you and you control a Forest and a Plains, you may cast Qasali Ambusher without paying its mana cost and as though it had flash. @@ -14163,16 +13914,6 @@ power=2 toughness=3 [/card] [card] -name=Quagnoth -abilities=split second -text=Split second (As long as this spell is on the stack, players can't cast spells or activate abilities that aren't mana abilities.) -- Shroud (This permanent can't be the target of spells or abilities.) -- When a spell or ability an opponent controls causes you to discard Quagnoth, return it to your hand. -mana={5}{G} -type=Creature -subtype=Beast -power=4 -toughness=5 -[/card] -[card] name=Quarry Colossus text=When Quarry Colossus enters the battlefield, put target creature into its owner's library just beneath the top X cards of that library, where X is the number of Plains you control. mana={5}{W}{W} @@ -14317,12 +14058,6 @@ mana={4}{PR} type=Artifact [/card] [card] -name=Rageform -text=When Rageform enters the battlefield, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Rageform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -- Enchanted creature has double strike. (It deals both first-strike and regular combat damage.) -mana={2}{R}{R} -type=Enchantment -[/card] -[card] name=Raging River text=Whenever one or more creatures you control attack, each defending player divides all creatures without flying he or she controls into a "left" pile and a "right" pile. Then, for each attacking creature you control, choose "left" or "right." That creature can't be blocked this combat except by creatures with flying and creatures in a pile with the chosen label. mana={R}{R} @@ -15560,15 +15295,6 @@ power=2 toughness=2 [/card] [card] -name=Sand Golem -text=When a spell or ability an opponent controls causes you to discard Sand Golem, return Sand Golem from your graveyard to the battlefield with a +1/+1 counter on it at the beginning of the next end step. -mana={5} -type=Artifact Creature -subtype=Golem -power=3 -toughness=3 -[/card] -[card] name=Sandals of Abdallah text={2}, {T}: Target creature gains islandwalk until end of turn. When that creature dies this turn, destroy Sandals of Abdallah. mana={4} @@ -16911,13 +16637,6 @@ power=2 toughness=2 [/card] [card] -name=Snake Umbra -text=Enchant creature -- Enchanted creature gets +1/+1 and has "Whenever this creature deals damage to an opponent, you may draw a card." -- Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) -mana={2}{G} -type=Enchantment -subtype=Aura -[/card] -[card] name=Snow Mercy text=Whenever a creature deals damage to you, put a globe counter on it. -- {T}, {untap}, {T}, {untap}, {T}: Tap all creatures with globe counters on them. mana={2}{W}{W} @@ -17137,12 +16856,6 @@ mana={X}{B} type=Sorcery [/card] [card] -name=Soul Summons -text=Manifest the top card of your library. (Put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -mana={1}{W} -type=Sorcery -[/card] -[card] name=Soulfire Grand Master abilities=lifelink text=Lifelink -- Instant and sorcery spells you control have lifelink. -- {2}{UR}{UR}: The next time you cast an instant or sorcery spell from your hand this turn, put that card into your hand instead of into your graveyard as it resolves. @@ -17421,13 +17134,6 @@ type=Enchantment subtype=Aura [/card] [card] -name=Spider Umbra -text=Enchant creature -- Enchanted creature gets +1/+1 and has reach. (It can block creatures with flying.) -- Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) -mana={G} -type=Enchantment -subtype=Aura -[/card] -[card] name=Spike Cannibal text=Spike Cannibal enters the battlefield with a +1/+1 counter on it. -- When Spike Cannibal enters the battlefield, move all +1/+1 counters from all creatures onto it. mana={1}{B}{B} @@ -18054,15 +17760,6 @@ mana={3}{R} type=Enchantment [/card] [card] -name=Sultai Emissary -text=When Sultai Emissary dies, manifest the top card of your library. (Put that card onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -mana={1}{B} -type=Creature -subtype=Zombie Warrior -power=1 -toughness=1 -[/card] -[card] name=Summary Dismissal text=Exile all other spells and counter all abilities. mana={2}{U}{U} @@ -18240,16 +17937,6 @@ mana={4}{U} type=Sorcery [/card] [card] -name=Swooping Talon -abilities=flying -text=Flying -- {1}: Swooping Talon loses flying until end of turn. -- Provoke (When this attacks, you may have target creature defending player controls untap and block it if able.) -mana={4}{W}{W} -type=Creature -subtype=Bird Soldier -power=2 -toughness=6 -[/card] -[card] name=Sword of the Ages text=Sword of the Ages enters the battlefield tapped. -- {T}, Sacrifice Sword of the Ages and any number of creatures you control: Sword of the Ages deals X damage to target creature or player, where X is the total power of the creatures sacrificed this way, then exile Sword of the Ages and those creature cards. mana={6} @@ -18601,15 +18288,6 @@ power=3 toughness=1 [/card] [card] -name=Temur War Shaman -text=When Temur War Shaman enters the battlefield, manifest the top card of your library. (Put that card onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -- Whenever a permanent you control is turned face up, if it's a creature, you may have it fight target creature you don't control. -mana={4}{G}{G} -type=Creature -subtype=Human Shaman -power=4 -toughness=5 -[/card] -[card] name=Teremko Griffin abilities=flying,banding text=Flying; banding (Any creatures with banding, and up to one without, can attack in a band. Bands are blocked as a group. If any creatures with banding you control are blocking or being blocked by a creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.) @@ -20673,12 +20351,6 @@ mana={3}{R} type=Sorcery [/card] [card] -name=Wildcall -text=Manifest the top card of your library, then put X +1/+1 counters on it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -mana={X}{G}{G} -type=Sorcery -[/card] -[card] name=Willbender text=Morph {1}{U} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) -- When Willbender is turned face up, change the target of target spell or ability with a single target. mana={1}{U} @@ -20697,15 +20369,6 @@ power=2 toughness=3 [/card] [card] -name=Wilt-Leaf Liege -text=Other green creatures you control get +1/+1. -- Other white creatures you control get +1/+1. -- If a spell or ability an opponent controls causes you to discard Wilt-Leaf Liege, put it onto the battlefield instead of putting it into your graveyard. -mana={1}{GW}{GW}{GW} -type=Creature -subtype=Elf Knight -power=4 -toughness=4 -[/card] -[card] name=Windbrisk Heights text=Hideaway (This land enters the battlefield tapped. When it does, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library.) -- {T}: Add {W} to your mana pool. -- {W}, {T}: You may play the exiled card without paying its mana cost if you attacked with three or more creatures this turn. type=Land @@ -20753,12 +20416,6 @@ mana={X}{U} type=Instant [/card] [card] -name=Winter's Night -text=Whenever a player taps a snow land for mana, that player adds one mana to his or her mana pool of any type that land produced. That land doesn't untap during its controller's next untap step. -mana={R}{G}{W} -type=World Enchantment -[/card] -[card] name=Wishmonger text={2}: Target creature gains protection from the color of its controller's choice until end of turn. Any player may activate this ability. mana={3}{W} @@ -20768,28 +20425,12 @@ power=3 toughness=3 [/card] [card] -name=Witch Hunt -text=Players can't gain life. -- At the beginning of your upkeep, Witch Hunt deals 4 damage to you. -- At the beginning of your end step, target opponent chosen at random gains control of Witch Hunt. -mana={4}{R} -type=Enchantment -[/card] -[card] name=Withdraw text=Return target creature to its owner's hand. Then return another target creature to its owner's hand unless its controller pays {1}. mana={U}{U} type=Instant [/card] [card] -name=Wizened Snitches -abilities=flying -text=Flying -- Players play with the top card of their libraries revealed. -mana={3}{U} -type=Creature -subtype=Faerie Rogue -power=1 -toughness=3 -[/card] -[card] name=Wojek Apothecary text=Radiance — {T}: Prevent the next 1 damage that would be dealt to target creature and each other creature that shares a color with it this turn. mana={2}{W}{W} @@ -20808,12 +20449,6 @@ power=1 toughness=2 [/card] [card] -name=Wolfcaller's Howl -text=At the beginning of your upkeep, put X 2/2 green Wolf creature tokens onto the battlefield, where X is the number of your opponents with four or more cards in hand. -mana={3}{G} -type=Enchantment -[/card] -[card] name=Wood Sage text={T}: Name a creature card. Reveal the top four cards of your library and put all of them with that name into your hand. Put the rest into your graveyard. mana={G}{U} diff --git a/projects/mtg/include/MTGCardInstance.h b/projects/mtg/include/MTGCardInstance.h index 63beac0fb..6023d3525 100644 --- a/projects/mtg/include/MTGCardInstance.h +++ b/projects/mtg/include/MTGCardInstance.h @@ -121,6 +121,7 @@ public: int zpos; bool isDualWielding; bool stillNeeded; + Player * discarderOwner; Player * lastController; Player * previousController; MTGGameZone * getCurrentZone(); diff --git a/projects/mtg/include/MTGDefinitions.h b/projects/mtg/include/MTGDefinitions.h index 4cd71346d..33e528756 100644 --- a/projects/mtg/include/MTGDefinitions.h +++ b/projects/mtg/include/MTGDefinitions.h @@ -275,7 +275,8 @@ class Constants SHOWFROMTOPLIBRARY = 153, SHOWOPPONENTTOPLIBRARY = 154, TOTEMARMOR = 155, - NB_BASIC_ABILITIES = 156, + DISCARDTOPLAYBYOPPONENT = 156, + NB_BASIC_ABILITIES = 157, RARITY_S = 'S', //Special Rarity RARITY_M = 'M', //Mythics diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index 35551c229..1e8c06c5b 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -3028,6 +3028,10 @@ int AADiscardCard::resolve() Player * p = _target->controller(); WEvent * e = NEW WEventCardDiscard(_target); game->receiveEvent(e); + if(this->source->storedSourceCard) + _target->discarderOwner = this->source->storedSourceCard->controller(); + else + _target->discarderOwner = this->source->controller(); p->game->putInGraveyard(_target); while(_target->next) _target = _target->next; @@ -4852,12 +4856,19 @@ int AARandomDiscarder::resolve() { Targetable * _target = getTarget(); Player * player = getPlayerFromTarget(_target); + MTGCardInstance * _stored = NULL; + + if(this->source->storedSourceCard) + _stored = this->source->storedSourceCard; + else + _stored = this->source; + if (player) { WParsedInt numCards(nbcardsStr, NULL, source); for (int i = 0; i < numCards.intValue; i++) { - player->game->discardRandom(player->game->hand, source); + player->game->discardRandom(player->game->hand, _stored); } } diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index 5e057a329..24e9e57cf 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -552,6 +552,18 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe return 0; } + check = restriction[i].find("discardbyopponent"); + if(check != string::npos) + { + bool matchOpponent = false; + if(card->discarderOwner) + if(card->controller()->opponent() == card->discarderOwner) + matchOpponent = true; + + if(!matchOpponent) + return 0; + } + check = restriction[i].find("copiedacard"); if(check != string::npos) { diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 1b395a834..aa8fbd89a 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -306,6 +306,7 @@ void MTGCardInstance::initMTGCI() auraParent = NULL; TokenAndAbility = NULL; GrantedAndAbility = NULL; + discarderOwner = NULL; lastController = NULL; regenerateTokens = 0; blocked = false; diff --git a/projects/mtg/src/MTGDefinitions.cpp b/projects/mtg/src/MTGDefinitions.cpp index 507032e8b..2b3c09e78 100644 --- a/projects/mtg/src/MTGDefinitions.cpp +++ b/projects/mtg/src/MTGDefinitions.cpp @@ -186,7 +186,8 @@ const char* Constants::MTGBasicAbilities[] = { "canplayinstantsorcerylibrarytop",//instant or sorcery "showfromtoplibrary", "showopponenttoplibrary", - "totemarmor" + "totemarmor", + "discardtoplaybyopponent" }; map Constants::MTGBasicAbilitiesMap; diff --git a/projects/mtg/src/MTGGameZones.cpp b/projects/mtg/src/MTGGameZones.cpp index 850eb106c..aac91f1f5 100644 --- a/projects/mtg/src/MTGGameZones.cpp +++ b/projects/mtg/src/MTGGameZones.cpp @@ -343,6 +343,7 @@ MTGCardInstance * MTGPlayerCards::putInHand(MTGCardInstance * card) MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone * from, MTGGameZone * to,bool asCopy) { MTGCardInstance * copy = NULL; + Player * discarderOwner = NULL; GameObserver *g = owner->getObserver(); if (!from || !to) return card; //Error check @@ -351,6 +352,8 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone bool shufflelibrary = card->basicAbilities[(int)Constants::SHUFFLELIBRARYDEATH]; bool inplaytoinplay = false; bool ripToken = false; + if (card->discarderOwner) + discarderOwner = card->discarderOwner; if (g->players[0]->game->battlefield->hasName("Rest in Peace")||g->players[1]->game->battlefield->hasName("Rest in Peace")) ripToken = true; //Madness or Put in Play... @@ -420,6 +423,33 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone { copy->miracle = true; } + //reset discarder Owner + if(to == g->players[0]->game->hand || to == g->players[0]->game->stack || to == g->players[0]->game->library || + to == g->players[1]->game->hand || to == g->players[1]->game->stack || to == g->players[1]->game->library) + { + card->discarderOwner = NULL; + copy->discarderOwner = NULL; + } + //copy discarderowner + if (discarderOwner) + { + copy->discarderOwner = discarderOwner; + //change to + if(to == g->players[0]->game->graveyard) + { + if(card->has(Constants::DISCARDTOPLAYBYOPPONENT) && discarderOwner == card->controller()->opponent()) + { + to = g->players[0]->game->battlefield; + } + } + else if(to == g->players[1]->game->graveyard) + { + if(card->has(Constants::DISCARDTOPLAYBYOPPONENT) && discarderOwner == card->controller()->opponent()) + { + to = g->players[1]->game->battlefield; + } + } + } if(from == g->players[0]->game->battlefield || from == g->players[1]->game->battlefield) if(to != g->players[0]->game->battlefield || to != g->players[1]->game->battlefield) { @@ -509,6 +539,21 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone SAFE_DELETE(previous); } + if(to == g->players[0]->game->battlefield || to == g->players[1]->game->battlefield) + { + if(ret->alias == 109736 && discarderOwner) + { + if(discarderOwner == ret->controller()->opponent()) + { + AbilityFactory af(g); + MTGAbility * dodeCounter = af.parseMagicLine("counter(1/1,2)",-1,NULL,ret); + dodeCounter->oneShot = true; + dodeCounter->canBeInterrupted = false; + dodeCounter->resolve(); + SAFE_DELETE(dodeCounter); + } + } + } } if(!asCopy) { @@ -527,7 +572,7 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone } -void MTGPlayerCards::discardRandom(MTGGameZone * from, MTGCardInstance *) +void MTGPlayerCards::discardRandom(MTGGameZone * from, MTGCardInstance * _stored) { if (!from->nb_cards) return; @@ -535,6 +580,8 @@ void MTGPlayerCards::discardRandom(MTGGameZone * from, MTGCardInstance *) WEvent * e = NEW WEventCardDiscard(from->cards[r]); GameObserver * game = owner->getObserver(); game->receiveEvent(e); + if(_stored) + from->cards[r]->discarderOwner = _stored->controller(); putInZone(from->cards[r], from, graveyard); }