From 2eb372909d538cba528596705f7c6e0b0ea13694 Mon Sep 17 00:00:00 2001 From: fireshoes Date: Mon, 2 Mar 2015 13:29:56 -0600 Subject: [PATCH 1/7] Updated mtg-cards-data.txt with 3/2 DTK spoilers, added DTK Djinn Monk token to card-pictures-tok.txt --- .../src/main/resources/card-pictures-tok.txt | 2 ++ Utils/mtg-cards-data.txt | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Mage.Client/src/main/resources/card-pictures-tok.txt b/Mage.Client/src/main/resources/card-pictures-tok.txt index ed1df7b230..e82f8515da 100644 --- a/Mage.Client/src/main/resources/card-pictures-tok.txt +++ b/Mage.Client/src/main/resources/card-pictures-tok.txt @@ -1,3 +1,5 @@ +$|Generate|TOK:DTK|Djinn Monk| + #|Generate|TOK:GRC|Bird| #|Generate|TOK:GRC|Golem| #|Generate|TOK:GRC|Human| diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index d22fe52e47..85246095f5 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -25571,4 +25571,15 @@ Curse of Thirst|WPN Gateway|81|Special|{4}{B}|Enchantment — Aura Curse|||Encha Nearheath Stalker|WPN Gateway|82|Special|{4}{R}|Creature — Vampire Rogue|4|1|Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)| Bloodcrazed Neonate|WPN Gateway|83|Special|{1}{R}|Creature — Vampire|2|1|Bloodcrazed Neonate attacks each turn if able.$Whenever Bloodcrazed Neonate deals combat damage to a player, put a +1/+1 counter on it.| Boneyard Wurm|WPN Gateway|84|Special|{1}{G}|Creature — Wurm|*|*|Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.| -Dragonlord's Reaper|Dragons of Tarkir|96|Rare|{5}{B}{B}|Creature - Dragon|5|6|Flying$When Dragonlord's Reaper enters the battlefield, if you cast it from your hand and there are five or more other creatures on the battlefield, destroy all other creatures.| \ No newline at end of file +Profound Journey|Dragons of Tarkir|30|Rare|{5}{W}{W}|Sorcery|||Return target permanent card from your graveyard to the battlefield.$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.)| +Sandcrafter Mage|Dragons of Tarkir|33|Common|{2}{W}|Creature - Human Wizard|2|2|When Sandcrafter Mage enters the battlefield, bolster 1 (Choose a creature with the least toughness among the creatures you control and put a +1/+1 counter on it.)| +Ojutai's SUmmons|Dragons of Tarkir|68|Common|{3}{U}{U}|Sorcery|||Put a 2/2 blue Djinn Monk creature token with flying onto the battlefield.$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.)| +Stratus Dancer|Dragons of Tarkir|80|Rare|{1}{U}|Creature - Djinn Monk|2|1|Flying$Megamorph 1U You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time from its megamorph cost and put a +1/+1 counter on it.)| +Dragonlord's Reaper|Dragons of Tarkir|96|Rare|{5}{B}{B}|Creature - Dragon|5|6|Flying$When Dragonlord's Reaper enters the battlefield, if you cast it from your hand and there are five or more other creatures on the battlefield, destroy all other creatures.| +Sidisi, Undead Vizier|Dragons of Tarkir|120|Rare|{3}{B}{B}|Legendary Creature - Zombie Naga|4|6|Deathtouch$Exploit (When this creature enters the battlefield, you may sacrifice a creature.)$When Sidisi, Undead Vizier exploits a creature, you may search your library for a card, put it into your hand, then shuffle your library.| +Silumgar Butcher|Dragons of Tarkir|122|Common|{4}{B}|Creature - Zombie Djinn|Exploit (When this creature enters the battlefield, you may sacrifice a creature.)$When Silumgar Butcher exploits a creature, target creature gets -3/-3 until end of turn.| +Dragon Tempest|Dragons of Tarkir|136|Rare|{1}{R}|Enchantment|||Whenever a creature with flying enters the battlefield under your control, it gains haste until the end of turn.$Whenever a Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control.| +Sprinting Warbrute|Dragons of Tarkir|157|{4}{R}|Creature - Ogre Berserker|5|4|Sprinting Warbrute attacks each turn if able.$Dash 3R (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)| +Aerie Bowmasters|Dragons of Tarkir|170|{2}{G}{G}|Creature - Hound Archer|Reach (This creature can block creatures with flying.)$Megamorph 5G (You may cast this card face down as a 2/2 creature for {3}. Turn it face up at any time for its megamorph cost and put a +1/+1 counter on it.)| +Stampeding Elk Herd|Dragons of Tarkir|208|{3}{G}{G}|Creature - Elk|5|5|Formidable - Whenever Stampeding Elk Herd attacks, if creatures you control have total power 8 or greater, creatures you control gain trample until end of turn.| +Dragonlord Silumgar|Dragons of Tarkir|220|Mythic|{4}{U}{B}|Legendary Creature - Elder Dragon|Flying$Deathtouch$When Dragonlord Silumgar enters the battlefield, gain control of target creature or planeswalker for as long as you control Dragonlord Silumgar.| \ No newline at end of file From 30972575acb4a27d969c3065f69a90cdf4ffd213 Mon Sep 17 00:00:00 2001 From: fireshoes Date: Mon, 2 Mar 2015 13:38:46 -0600 Subject: [PATCH 2/7] Fixed minor error in mtg-sets-data.txt and known-sets.txt --- Utils/known-sets.txt | 2 +- Utils/mtg-sets-data.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Utils/known-sets.txt b/Utils/known-sets.txt index 062538f80d..921d8faa0c 100644 --- a/Utils/known-sets.txt +++ b/Utils/known-sets.txt @@ -16,7 +16,7 @@ Conflux|conflux| Dark Ascension|darkascension| Darksteel|darksteel| Dissension|dissension| -Dragons of Tarkir[dragonsoftarkir] +Dragons of Tarkir[dragonsoftarkir| Dragon's Maze|dragonsmaze| Duel Decks: Ajani vs. Nicol Bolas|ajanivsnicolbolas| Duel Decks: Divine vs. Demonic|divinevsdemonic| diff --git a/Utils/mtg-sets-data.txt b/Utils/mtg-sets-data.txt index f5d3b826e0..c7a362f0d0 100644 --- a/Utils/mtg-sets-data.txt +++ b/Utils/mtg-sets-data.txt @@ -31,7 +31,7 @@ Dissension|DIS| Deckmasters|DKM| Dragon's Maze|DGM| The Dark|DRK| -Dragons of Tarkir[DTK] +Dragons of Tarkir|DTK| Duel Decks: Ajani vs. Nicol Bolas|DDH| Duel Decks: Elves vs. Goblins|EVG| Duel Decks: Divine vs. Demonic|DDC| From c8dd7c4eddf74fab7826eadc910f5259d4b3039b Mon Sep 17 00:00:00 2001 From: fireshoes Date: Mon, 2 Mar 2015 13:40:29 -0600 Subject: [PATCH 3/7] Fixed minor error in mtg-sets-data.txt and known-sets.txt --- Utils/known-sets.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Utils/known-sets.txt b/Utils/known-sets.txt index 921d8faa0c..d954b96ef4 100644 --- a/Utils/known-sets.txt +++ b/Utils/known-sets.txt @@ -16,7 +16,7 @@ Conflux|conflux| Dark Ascension|darkascension| Darksteel|darksteel| Dissension|dissension| -Dragons of Tarkir[dragonsoftarkir| +Dragons of Tarkir|dragonsoftarkir| Dragon's Maze|dragonsmaze| Duel Decks: Ajani vs. Nicol Bolas|ajanivsnicolbolas| Duel Decks: Divine vs. Demonic|divinevsdemonic| From 425f666fd78c59993a85f510de4024b8c4a0f686 Mon Sep 17 00:00:00 2001 From: fireshoes Date: Mon, 2 Mar 2015 13:49:52 -0600 Subject: [PATCH 4/7] Fixed minor error in mtg-cards-data.txt --- Utils/mtg-cards-data.txt | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 85246095f5..fddd7aa29a 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -25571,15 +25571,15 @@ Curse of Thirst|WPN Gateway|81|Special|{4}{B}|Enchantment — Aura Curse|||Encha Nearheath Stalker|WPN Gateway|82|Special|{4}{R}|Creature — Vampire Rogue|4|1|Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)| Bloodcrazed Neonate|WPN Gateway|83|Special|{1}{R}|Creature — Vampire|2|1|Bloodcrazed Neonate attacks each turn if able.$Whenever Bloodcrazed Neonate deals combat damage to a player, put a +1/+1 counter on it.| Boneyard Wurm|WPN Gateway|84|Special|{1}{G}|Creature — Wurm|*|*|Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.| -Profound Journey|Dragons of Tarkir|30|Rare|{5}{W}{W}|Sorcery|||Return target permanent card from your graveyard to the battlefield.$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.)| -Sandcrafter Mage|Dragons of Tarkir|33|Common|{2}{W}|Creature - Human Wizard|2|2|When Sandcrafter Mage enters the battlefield, bolster 1 (Choose a creature with the least toughness among the creatures you control and put a +1/+1 counter on it.)| -Ojutai's SUmmons|Dragons of Tarkir|68|Common|{3}{U}{U}|Sorcery|||Put a 2/2 blue Djinn Monk creature token with flying onto the battlefield.$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.)| -Stratus Dancer|Dragons of Tarkir|80|Rare|{1}{U}|Creature - Djinn Monk|2|1|Flying$Megamorph 1U You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time from its megamorph cost and put a +1/+1 counter on it.)| -Dragonlord's Reaper|Dragons of Tarkir|96|Rare|{5}{B}{B}|Creature - Dragon|5|6|Flying$When Dragonlord's Reaper enters the battlefield, if you cast it from your hand and there are five or more other creatures on the battlefield, destroy all other creatures.| -Sidisi, Undead Vizier|Dragons of Tarkir|120|Rare|{3}{B}{B}|Legendary Creature - Zombie Naga|4|6|Deathtouch$Exploit (When this creature enters the battlefield, you may sacrifice a creature.)$When Sidisi, Undead Vizier exploits a creature, you may search your library for a card, put it into your hand, then shuffle your library.| -Silumgar Butcher|Dragons of Tarkir|122|Common|{4}{B}|Creature - Zombie Djinn|Exploit (When this creature enters the battlefield, you may sacrifice a creature.)$When Silumgar Butcher exploits a creature, target creature gets -3/-3 until end of turn.| -Dragon Tempest|Dragons of Tarkir|136|Rare|{1}{R}|Enchantment|||Whenever a creature with flying enters the battlefield under your control, it gains haste until the end of turn.$Whenever a Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control.| -Sprinting Warbrute|Dragons of Tarkir|157|{4}{R}|Creature - Ogre Berserker|5|4|Sprinting Warbrute attacks each turn if able.$Dash 3R (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)| -Aerie Bowmasters|Dragons of Tarkir|170|{2}{G}{G}|Creature - Hound Archer|Reach (This creature can block creatures with flying.)$Megamorph 5G (You may cast this card face down as a 2/2 creature for {3}. Turn it face up at any time for its megamorph cost and put a +1/+1 counter on it.)| -Stampeding Elk Herd|Dragons of Tarkir|208|{3}{G}{G}|Creature - Elk|5|5|Formidable - Whenever Stampeding Elk Herd attacks, if creatures you control have total power 8 or greater, creatures you control gain trample until end of turn.| -Dragonlord Silumgar|Dragons of Tarkir|220|Mythic|{4}{U}{B}|Legendary Creature - Elder Dragon|Flying$Deathtouch$When Dragonlord Silumgar enters the battlefield, gain control of target creature or planeswalker for as long as you control Dragonlord Silumgar.| \ No newline at end of file +Profound Journey|Dragons of Tarkir|30|R|{5}{W}{W}|Sorcery|||Return target permanent card from your graveyard to the battlefield.$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.)| +Sandcrafter Mage|Dragons of Tarkir|33|C|{2}{W}|Creature - Human Wizard|2|2|When Sandcrafter Mage enters the battlefield, bolster 1 (Choose a creature with the least toughness among the creatures you control and put a +1/+1 counter on it.)| +Ojutai's SUmmons|Dragons of Tarkir|68|C|{3}{U}{U}|Sorcery|||Put a 2/2 blue Djinn Monk creature token with flying onto the battlefield.$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.)| +Stratus Dancer|Dragons of Tarkir|80|R|{1}{U}|Creature - Djinn Monk|2|1|Flying$Megamorph 1U You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time from its megamorph cost and put a +1/+1 counter on it.)| +Dragonlord's Reaper|Dragons of Tarkir|96|R|{5}{B}{B}|Creature - Dragon|5|6|Flying$When Dragonlord's Reaper enters the battlefield, if you cast it from your hand and there are five or more other creatures on the battlefield, destroy all other creatures.| +Sidisi, Undead Vizier|Dragons of Tarkir|120|R|{3}{B}{B}|Legendary Creature - Zombie Naga|4|6|Deathtouch$Exploit (When this creature enters the battlefield, you may sacrifice a creature.)$When Sidisi, Undead Vizier exploits a creature, you may search your library for a card, put it into your hand, then shuffle your library.| +Silumgar Butcher|Dragons of Tarkir|122|C|{4}{B}|Creature - Zombie Djinn|Exploit (When this creature enters the battlefield, you may sacrifice a creature.)$When Silumgar Butcher exploits a creature, target creature gets -3/-3 until end of turn.| +Dragon Tempest|Dragons of Tarkir|136|R|{1}{R}|Enchantment|||Whenever a creature with flying enters the battlefield under your control, it gains haste until the end of turn.$Whenever a Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control.| +Sprinting Warbrute|Dragons of Tarkir|157|C|{4}{R}|Creature - Ogre Berserker|5|4|Sprinting Warbrute attacks each turn if able.$Dash 3R (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)| +Aerie Bowmasters|Dragons of Tarkir|170|C||{2}{G}{G}|Creature - Hound Archer|Reach (This creature can block creatures with flying.)$Megamorph 5G (You may cast this card face down as a 2/2 creature for {3}. Turn it face up at any time for its megamorph cost and put a +1/+1 counter on it.)| +Stampeding Elk Herd|Dragons of Tarkir|208|C|{3}{G}{G}|Creature - Elk|5|5|Formidable - Whenever Stampeding Elk Herd attacks, if creatures you control have total power 8 or greater, creatures you control gain trample until end of turn.| +Dragonlord Silumgar|Dragons of Tarkir|220|M|{4}{U}{B}|Legendary Creature - Elder Dragon|Flying$Deathtouch$When Dragonlord Silumgar enters the battlefield, gain control of target creature or planeswalker for as long as you control Dragonlord Silumgar.| \ No newline at end of file From 45b4c84b537c7af7284ef57cb9dd2cae792671d8 Mon Sep 17 00:00:00 2001 From: fireshoes Date: Mon, 2 Mar 2015 14:19:40 -0600 Subject: [PATCH 5/7] Fixed minor errors in mtg-cards-data.txt. Added Sandcrafter Mage, Ojutai's Summons, Profound Journey, Sprinting Warbrute --- .../sets/dragonsoftarkir/OjutaisSummons.java | 78 +++++++++++++++++++ .../sets/dragonsoftarkir/ProfoundJourney.java | 78 +++++++++++++++++++ .../sets/dragonsoftarkir/SandcrafterMage.java | 64 +++++++++++++++ .../dragonsoftarkir/SprintingWarbrute.java | 66 ++++++++++++++++ Utils/mtg-cards-data.txt | 12 +-- 5 files changed, 292 insertions(+), 6 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/dragonsoftarkir/OjutaisSummons.java create mode 100644 Mage.Sets/src/mage/sets/dragonsoftarkir/ProfoundJourney.java create mode 100644 Mage.Sets/src/mage/sets/dragonsoftarkir/SandcrafterMage.java create mode 100644 Mage.Sets/src/mage/sets/dragonsoftarkir/SprintingWarbrute.java diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/OjutaisSummons.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/OjutaisSummons.java new file mode 100644 index 0000000000..6304750ef8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/OjutaisSummons.java @@ -0,0 +1,78 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.dragonsoftarkir; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.ReboundAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.game.permanent.token.Token; + +/** + * + * @author fireshoes + */ +public class OjutaisSummons extends CardImpl { + + public OjutaisSummons(UUID ownerId) { + super(ownerId, 68, "Ojutai's Summons", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{3}{U}{U}"); + this.expansionSetCode = "DTK"; + + // Put a 2/2 blue Djinn Monk creature token with flying onto the battlefield. + this.getSpellAbility().addEffect(new CreateTokenEffect(new DjinnMonkToken())); + + // Rebound + this.addAbility(new ReboundAbility()); + } + + public OjutaisSummons(final OjutaisSummons card) { + super(card); + } + + @Override + public OjutaisSummons copy() { + return new OjutaisSummons(this); + } +} + +class DjinnMonkToken extends Token { + DjinnMonkToken() { + super("Djinn Monk", "2/2 blue Djinn Monk creature token"); + cardType.add(CardType.CREATURE); + color.setBlue(true); + subtype.add("Djinn"); + subtype.add("Monk"); + power = new MageInt(2); + toughness = new MageInt(2); + addAbility(FlyingAbility.getInstance()); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/ProfoundJourney.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/ProfoundJourney.java new file mode 100644 index 0000000000..0bf6608c58 --- /dev/null +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/ProfoundJourney.java @@ -0,0 +1,78 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.dragonsoftarkir; + +import java.util.UUID; +import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; +import mage.abilities.keyword.ReboundAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.target.common.TargetCardInYourGraveyard; + +/** + * + * @author fireshoes + */ +public class ProfoundJourney extends CardImpl { + + private static final FilterCard filter = new FilterCard("permanent card from your graveyard"); + + static { + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.ENCHANTMENT), + new CardTypePredicate(CardType.LAND), + new CardTypePredicate(CardType.PLANESWALKER))); + } + + public ProfoundJourney(UUID ownerId) { + super(ownerId, 30, "Profound Journey", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{5}{W}{W}"); + this.expansionSetCode = "DTK"; + + // Return target permanent card from your graveyard to the battlefield. + this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(filter)); + + // Rebound + this.addAbility(new ReboundAbility()); + } + + public ProfoundJourney(final ProfoundJourney card) { + super(card); + } + + @Override + public ProfoundJourney copy() { + return new ProfoundJourney(this); + } +} diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/SandcrafterMage.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/SandcrafterMage.java new file mode 100644 index 0000000000..2e123df331 --- /dev/null +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/SandcrafterMage.java @@ -0,0 +1,64 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.dragonsoftarkir; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.keyword.BolsterEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class SandcrafterMage extends CardImpl { + + public SandcrafterMage(UUID ownerId) { + super(ownerId, 33, "Sandcrafter Mage", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}"); + this.expansionSetCode = "DTK"; + this.subtype.add("Human"); + this.subtype.add("Wizard"); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // When Sandcrafter Mage enters the battlefield, bolster 1 + this.addAbility(new EntersBattlefieldTriggeredAbility(new BolsterEffect(1), false)); + } + + public SandcrafterMage(final SandcrafterMage card) { + super(card); + } + + @Override + public SandcrafterMage copy() { + return new SandcrafterMage(this); + } +} diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/SprintingWarbrute.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/SprintingWarbrute.java new file mode 100644 index 0000000000..92bda69591 --- /dev/null +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/SprintingWarbrute.java @@ -0,0 +1,66 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.dragonsoftarkir; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.AttacksEachTurnStaticAbility; +import mage.abilities.keyword.DashAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class SprintingWarbrute extends CardImpl { + + public SprintingWarbrute(UUID ownerId) { + super(ownerId, 157, "Sprinting Warbrute", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{R}"); + this.expansionSetCode = "DTK"; + this.subtype.add("Ogre"); + this.subtype.add("Berserker"); + this.power = new MageInt(5); + this.toughness = new MageInt(4); + + // Sprinting Warbrute attacks each turn if able. + this.addAbility(new AttacksEachTurnStaticAbility()); + // Dash {3}{R} + this.addAbility(new DashAbility(this, "{3}{R}")); + } + + public SprintingWarbrute(final SprintingWarbrute card) { + super(card); + } + + @Override + public SprintingWarbrute copy() { + return new SprintingWarbrute(this); + } +} diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index fddd7aa29a..bda409fc15 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -25573,13 +25573,13 @@ Bloodcrazed Neonate|WPN Gateway|83|Special|{1}{R}|Creature — Vampire|2|1|Blood Boneyard Wurm|WPN Gateway|84|Special|{1}{G}|Creature — Wurm|*|*|Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.| Profound Journey|Dragons of Tarkir|30|R|{5}{W}{W}|Sorcery|||Return target permanent card from your graveyard to the battlefield.$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.)| Sandcrafter Mage|Dragons of Tarkir|33|C|{2}{W}|Creature - Human Wizard|2|2|When Sandcrafter Mage enters the battlefield, bolster 1 (Choose a creature with the least toughness among the creatures you control and put a +1/+1 counter on it.)| -Ojutai's SUmmons|Dragons of Tarkir|68|C|{3}{U}{U}|Sorcery|||Put a 2/2 blue Djinn Monk creature token with flying onto the battlefield.$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.)| -Stratus Dancer|Dragons of Tarkir|80|R|{1}{U}|Creature - Djinn Monk|2|1|Flying$Megamorph 1U You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time from its megamorph cost and put a +1/+1 counter on it.)| +Ojutai's Summons|Dragons of Tarkir|68|C|{3}{U}{U}|Sorcery|||Put a 2/2 blue Djinn Monk creature token with flying onto the battlefield.$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.)| +Stratus Dancer|Dragons of Tarkir|80|R|{1}{U}|Creature - Djinn Monk|2|1|Flying$Megamorph {1}{U} You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time from its megamorph cost and put a +1/+1 counter on it.)| Dragonlord's Reaper|Dragons of Tarkir|96|R|{5}{B}{B}|Creature - Dragon|5|6|Flying$When Dragonlord's Reaper enters the battlefield, if you cast it from your hand and there are five or more other creatures on the battlefield, destroy all other creatures.| Sidisi, Undead Vizier|Dragons of Tarkir|120|R|{3}{B}{B}|Legendary Creature - Zombie Naga|4|6|Deathtouch$Exploit (When this creature enters the battlefield, you may sacrifice a creature.)$When Sidisi, Undead Vizier exploits a creature, you may search your library for a card, put it into your hand, then shuffle your library.| -Silumgar Butcher|Dragons of Tarkir|122|C|{4}{B}|Creature - Zombie Djinn|Exploit (When this creature enters the battlefield, you may sacrifice a creature.)$When Silumgar Butcher exploits a creature, target creature gets -3/-3 until end of turn.| +Silumgar Butcher|Dragons of Tarkir|122|C|{4}{B}|Creature - Zombie Djinn|3|3|Exploit (When this creature enters the battlefield, you may sacrifice a creature.)$When Silumgar Butcher exploits a creature, target creature gets -3/-3 until end of turn.| Dragon Tempest|Dragons of Tarkir|136|R|{1}{R}|Enchantment|||Whenever a creature with flying enters the battlefield under your control, it gains haste until the end of turn.$Whenever a Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control.| -Sprinting Warbrute|Dragons of Tarkir|157|C|{4}{R}|Creature - Ogre Berserker|5|4|Sprinting Warbrute attacks each turn if able.$Dash 3R (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)| -Aerie Bowmasters|Dragons of Tarkir|170|C||{2}{G}{G}|Creature - Hound Archer|Reach (This creature can block creatures with flying.)$Megamorph 5G (You may cast this card face down as a 2/2 creature for {3}. Turn it face up at any time for its megamorph cost and put a +1/+1 counter on it.)| +Sprinting Warbrute|Dragons of Tarkir|157|C|{4}{R}|Creature - Ogre Berserker|5|4|Sprinting Warbrute attacks each turn if able.$Dash {3}{R} (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)| +Aerie Bowmasters|Dragons of Tarkir|170|C||{2}{G}{G}|Creature - Hound Archer|Reach (This creature can block creatures with flying.)$Megamorph {5}{G} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up at any time for its megamorph cost and put a +1/+1 counter on it.)| Stampeding Elk Herd|Dragons of Tarkir|208|C|{3}{G}{G}|Creature - Elk|5|5|Formidable - Whenever Stampeding Elk Herd attacks, if creatures you control have total power 8 or greater, creatures you control gain trample until end of turn.| -Dragonlord Silumgar|Dragons of Tarkir|220|M|{4}{U}{B}|Legendary Creature - Elder Dragon|Flying$Deathtouch$When Dragonlord Silumgar enters the battlefield, gain control of target creature or planeswalker for as long as you control Dragonlord Silumgar.| \ No newline at end of file +Dragonlord Silumgar|Dragons of Tarkir|220|M|{4}{U}{B}|Legendary Creature - Elder Dragon|3|5|Flying$Deathtouch$When Dragonlord Silumgar enters the battlefield, gain control of target creature or planeswalker for as long as you control Dragonlord Silumgar.| \ No newline at end of file From a125eaa227194ff764bc0bdf00af63b2c1437fcf Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Mon, 2 Mar 2015 22:32:47 +0100 Subject: [PATCH 6/7] Adding missing "containsClass" method to Abilities interface. --- Mage/src/mage/abilities/Abilities.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Mage/src/mage/abilities/Abilities.java b/Mage/src/mage/abilities/Abilities.java index 7768d0c535..0dd9366f18 100644 --- a/Mage/src/mage/abilities/Abilities.java +++ b/Mage/src/mage/abilities/Abilities.java @@ -241,6 +241,14 @@ public interface Abilities extends List, Serializable { */ boolean containsAll(Abilities abilities); + /** + * Searches this set of abilities for the existence of the give class + * + * @param classObject + * @return True if the passed in class is also in this set of abilities. + */ + boolean containsClass(Class classObject); + /** * Copies this set of abilities. This copy should be new instances of all * the contained abilities. From 867bb38f918ef7e457fcc9e6640bdd84248e513e Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Tue, 3 Mar 2015 00:19:46 +0100 Subject: [PATCH 7/7] * Geist of Saint Traft - Fixed that the Token was not exiled at end of combat. --- .../sets/innistrad/GeistOfSaintTraft.java | 6 +- .../cards/triggers/GeistOfSaintTraftTest.java | 84 +++++++++++++++++++ .../effects/common/ExileTargetEffect.java | 24 +++--- Mage/src/mage/game/CardState.java | 3 - 4 files changed, 98 insertions(+), 19 deletions(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/triggers/GeistOfSaintTraftTest.java diff --git a/Mage.Sets/src/mage/sets/innistrad/GeistOfSaintTraft.java b/Mage.Sets/src/mage/sets/innistrad/GeistOfSaintTraft.java index 0573335164..121a77b270 100644 --- a/Mage.Sets/src/mage/sets/innistrad/GeistOfSaintTraft.java +++ b/Mage.Sets/src/mage/sets/innistrad/GeistOfSaintTraft.java @@ -43,7 +43,6 @@ import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.constants.Outcome; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.game.permanent.token.AngelToken; import mage.players.Player; import mage.target.targetpointer.FixedTarget; @@ -60,11 +59,10 @@ public class GeistOfSaintTraft extends CardImpl { this.subtype.add("Spirit"); this.subtype.add("Cleric"); - this.color.setBlue(true); - this.color.setWhite(true); this.power = new MageInt(2); this.toughness = new MageInt(2); + // Hexproof this.addAbility(HexproofAbility.getInstance()); // Whenever Geist of Saint Traft attacks, put a 4/4 white Angel creature token with flying onto the battlefield tapped and attacking. Exile that token at end of combat. this.addAbility(new AttacksTriggeredAbility(new GeistOfSaintTraftEffect(), false)); @@ -97,7 +95,7 @@ class GeistOfSaintTraftEffect extends OneShotEffect { if (controller != null && token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId(), true, true)) { Effect effect = new ExileTargetEffect(); effect.setTargetPointer(new FixedTarget(token.getLastAddedToken())); - CreateDelayedTriggeredAbilityEffect createEffect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(effect)); + CreateDelayedTriggeredAbilityEffect createEffect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(effect), false); createEffect.apply(game, source); return true; } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/GeistOfSaintTraftTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/GeistOfSaintTraftTest.java new file mode 100644 index 0000000000..2bf22a6a29 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/GeistOfSaintTraftTest.java @@ -0,0 +1,84 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package org.mage.test.cards.triggers; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * @author LevelX2 + */ +public class GeistOfSaintTraftTest extends CardTestPlayerBase { + + /** + * Geist of Saint Traft - Legendary Spirit Cleric 2/2, {1}{W}{U} + * + * Hexproof + * Whenever Geist of Saint Traft attacks, put a 4/4 white Angel creature token with flying onto the battlefield tapped and attacking. Exile that token at end of combat. + * + */ + @Test + public void testTokenwillBeCreated() { + + addCard(Zone.BATTLEFIELD, playerB, "Geist of Saint Traft", 1); + + attack(2, playerB, "Geist of Saint Traft"); + + setStopAt(2, PhaseStep.END_COMBAT); + execute(); + + assertPermanentCount(playerB, "Geist of Saint Traft", 1); + assertPowerToughness(playerB, "Geist of Saint Traft", 2, 2); + assertPermanentCount(playerB, "Angel", 1); + assertPowerToughness(playerB, "Angel", 4, 4); + + assertLife(playerA, 14); + assertLife(playerB, 20); + } + + + @Test + public void testTokenwillBeExiled() { + + addCard(Zone.BATTLEFIELD, playerB, "Geist of Saint Traft", 1); + + attack(2, playerB, "Geist of Saint Traft"); + + setStopAt(2, PhaseStep.POSTCOMBAT_MAIN); + execute(); + + assertPermanentCount(playerB, "Geist of Saint Traft", 1); + assertPowerToughness(playerB, "Geist of Saint Traft", 2, 2); + assertPermanentCount(playerB, "Angel", 0); + + assertLife(playerA, 14); + assertLife(playerB, 20); + } +} diff --git a/Mage/src/mage/abilities/effects/common/ExileTargetEffect.java b/Mage/src/mage/abilities/effects/common/ExileTargetEffect.java index 44637c432c..5c63067f6a 100644 --- a/Mage/src/mage/abilities/effects/common/ExileTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/ExileTargetEffect.java @@ -49,24 +49,24 @@ public class ExileTargetEffect extends OneShotEffect { private String exileZone = null; private UUID exileId = null; - public ExileTargetEffect(UUID exileId, String exileZone, Zone onlyFromZone) { - super(Outcome.Exile); - this.exileZone = exileZone; - this.exileId = exileId; - this.onlyFromZone = onlyFromZone; - } - - public ExileTargetEffect(UUID exileId, String exileZone) { - this(exileId, exileZone, null); - } - public ExileTargetEffect(String effectText) { this(); this.staticText = effectText; } public ExileTargetEffect() { - this(null, null); + this(null, ""); + } + + public ExileTargetEffect(UUID exileId, String exileZone) { + this(exileId, exileZone, null); + } + + public ExileTargetEffect(UUID exileId, String exileZone, Zone onlyFromZone) { + super(Outcome.Exile); + this.exileZone = exileZone; + this.exileId = exileId; + this.onlyFromZone = onlyFromZone; } public ExileTargetEffect(final ExileTargetEffect effect) { diff --git a/Mage/src/mage/game/CardState.java b/Mage/src/mage/game/CardState.java index 3311c5e519..60bc055b33 100644 --- a/Mage/src/mage/game/CardState.java +++ b/Mage/src/mage/game/CardState.java @@ -2,9 +2,6 @@ package mage.game; import java.util.HashMap; import java.util.Map; -import mage.abilities.Abilities; -import mage.abilities.AbilitiesImpl; -import mage.abilities.Ability; import mage.counters.Counters; /** *