{
boolean chooseUse(Outcome outcome, String message, Game game);
boolean choose(Outcome outcome, Choice choice, Game game);
boolean choosePile(Outcome outcome, String message, List extends Card> pile1, List extends Card> pile2, Game game);
- boolean playMana(ManaCost unpaid, Game game);
+ boolean playMana(ManaCost unpaid, String promptText, Game game);
/**
* Moves the cards from cards to the bottom of the players library.
diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java
index 78103f71a5a..f5ce14b6e0f 100644
--- a/Mage/src/mage/players/PlayerImpl.java
+++ b/Mage/src/mage/players/PlayerImpl.java
@@ -1628,6 +1628,9 @@ public abstract class PlayerImpl implements Player, Serializable {
MageObject source = game.getPermanentOrLKIBattlefield(sourceId);
if (source == null) {
source = game.getObject(sourceId);
+ if (source instanceof Card && !CardUtil.isPermanentCard((Card)source)) {
+ source = game.getLastKnownInformation(sourceId, Zone.STACK);
+ }
if (source instanceof Spell) {
sourceControllerId = ((Spell) source).getControllerId();
} else {
diff --git a/Mage/src/mage/target/common/TargetCardInLibrary.java b/Mage/src/mage/target/common/TargetCardInLibrary.java
index 1f9793e214a..69221dc3d8e 100644
--- a/Mage/src/mage/target/common/TargetCardInLibrary.java
+++ b/Mage/src/mage/target/common/TargetCardInLibrary.java
@@ -92,7 +92,7 @@ public class TargetCardInLibrary extends TargetCard {
Collections.sort(cards, new CardNameComparator());
while (!isChosen() && !doneChosing()) {
chosen = targets.size() >= minNumberOfTargets;
- if (!player.choose(outcome, new CardsImpl(Zone.LIBRARY, cards), this, game)) {
+ if (!player.chooseTarget(outcome, new CardsImpl(Zone.LIBRARY, cards), this, null, game)) {
return chosen;
}
chosen = targets.size() >= minNumberOfTargets;
diff --git a/Mage/src/mage/target/common/TargetControlledPermanent.java b/Mage/src/mage/target/common/TargetControlledPermanent.java
index e1eaccfa2da..24f0ddd7253 100644
--- a/Mage/src/mage/target/common/TargetControlledPermanent.java
+++ b/Mage/src/mage/target/common/TargetControlledPermanent.java
@@ -50,7 +50,7 @@ public class TargetControlledPermanent extends TargetPermanent {
this(1, 1, filter, false);
}
- public TargetControlledPermanent(int minNumTargets, int maxNumTargets, FilterPermanent filter, boolean notTarget) {
+ public TargetControlledPermanent(int minNumTargets, int maxNumTargets, FilterControlledPermanent filter, boolean notTarget) {
super(minNumTargets, maxNumTargets, filter, notTarget);
this.targetName = filter.getMessage();
}
diff --git a/Mage/src/mage/util/CardUtil.java b/Mage/src/mage/util/CardUtil.java
index 39261435927..5bc68966584 100644
--- a/Mage/src/mage/util/CardUtil.java
+++ b/Mage/src/mage/util/CardUtil.java
@@ -55,7 +55,6 @@ import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.Token;
import mage.game.stack.Spell;
-import mage.util.functions.CopyFunction;
import mage.util.functions.CopyTokenFunction;
@@ -379,16 +378,6 @@ public class CardUtil {
spellAbility.getManaCostsToPay().addAll(adjustedCost);
}
- /**
- * Returns function that copies params\abilities from one card to another.
- *
- * @param target
- */
- @Deprecated
- //public static CopyFunction copyTo(Card target) {
- private static CopyFunction copyTo(Card target) {
- return new CopyFunction(target);
- }
/**
* Returns function that copies params\abilities from one card to {@link Token}.
@@ -490,12 +479,19 @@ public class CardUtil {
}
public static UUID getObjectExileZoneId(Game game, MageObject mageObject) {
+ return getObjectExileZoneId(game, mageObject, false);
+ }
+
+ public static UUID getObjectExileZoneId(Game game, MageObject mageObject, boolean previous) {
int zoneChangeCounter = 0;
if (mageObject instanceof Permanent) {
zoneChangeCounter = ((Permanent) mageObject).getZoneChangeCounter();
} else if (mageObject instanceof Card) {
zoneChangeCounter = ((Card) mageObject).getZoneChangeCounter();
}
+ if (zoneChangeCounter > 0 && previous) {
+ zoneChangeCounter--;
+ }
return getExileZoneId(getObjectZoneString(SOURCE_EXILE_ZONE_TEXT,mageObject.getId(), game, zoneChangeCounter, false), game);
}
diff --git a/Mage/src/mage/util/ManaUtil.java b/Mage/src/mage/util/ManaUtil.java
index 7dcb73a38b3..080efef553f 100644
--- a/Mage/src/mage/util/ManaUtil.java
+++ b/Mage/src/mage/util/ManaUtil.java
@@ -10,6 +10,10 @@ import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Set;
import java.util.UUID;
+import mage.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.costs.mana.AlternateManaPaymentAbility;
+import mage.game.Game;
/**
* @author noxx
@@ -85,7 +89,7 @@ public class ManaUtil {
chosenManaAbility = chosenManaAbilityForHybrid != null ? chosenManaAbilityForHybrid : chosenManaAbility;
}
- if (countColored.size() == 0) { // seems there is no colorful mana we can pay for
+ if (countColored.isEmpty()) { // seems there is no colorful mana we can pay for
// try to pay {1}
if (unpaidMana.getColorless() > 0) {
// use any (lets choose first)
@@ -334,4 +338,28 @@ public class ManaUtil {
return useableAbilities;
}
+
+ /**
+ * This activates the special button inthe feedback panel of the client
+ * if there exists special ways to pay the mana (e.g. Delve, Convoke)
+ *
+ * @param source ability the mana costs have to be paid for
+ * @param game
+ * @param unpaid mana that has still to be paid
+ * @return message to be shown in human players feedback area
+ */
+ public static String addSpecialManaPayAbilities(Ability source, Game game, ManaCost unpaid) {
+ // check for special mana payment possibilities
+ MageObject mageObject = source.getSourceObject(game);
+ if (mageObject != null) {
+ for (Ability ability :mageObject.getAbilities()) {
+ if (ability instanceof AlternateManaPaymentAbility) {
+ ((AlternateManaPaymentAbility) ability).addSpecialAction(source, game, unpaid);
+ }
+ }
+ return unpaid.getText() + "" + mageObject.getLogName() + "
";
+ } else {
+ return unpaid.getText();
+ }
+ }
}
diff --git a/Mage/src/mage/util/functions/CopyFunction.java b/Mage/src/mage/util/functions/CopyFunction.java
deleted file mode 100644
index 2c335a3fc6f..00000000000
--- a/Mage/src/mage/util/functions/CopyFunction.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * 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.util.functions;
-
-import mage.abilities.Ability;
-import mage.cards.Card;
-import mage.constants.CardType;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-
-/**
- * @author nantuko
- */
-public class CopyFunction implements Function {
-
- protected Card target;
- protected Game game;
-
- public CopyFunction(Card target) {
- if (target == null) {
- throw new IllegalArgumentException("Target can't be null");
- }
- this.target = target;
- }
-
- @Override
- public Card apply(Card source) {
- if (target == null) {
- throw new IllegalArgumentException("Target can't be null");
- }
-
- target.setName(source.getName());
- target.getColor().setColor(source.getColor());
- target.getManaCost().clear();
- target.getManaCost().add(source.getManaCost());
- target.getCardType().clear();
- for (CardType type : source.getCardType()) {
- target.getCardType().add(type);
- }
- target.getSubtype().clear();
- for (String type : source.getSubtype()) {
- target.getSubtype().add(type);
- }
- target.getSupertype().clear();
- for (String type : source.getSupertype()) {
- target.getSupertype().add(type);
- }
- target.setExpansionSetCode(source.getExpansionSetCode());
- target.getAbilities().clear();
-
- for (Ability ability0 : source.getAbilities()) {
- Ability ability = ability0.copy();
- ability.newId();
- ability.setSourceId(target.getId());
- if(target instanceof Permanent) {
- ((Permanent)target).addAbility(ability, game);
- } else {
- target.addAbility(ability);
- }
- }
-
- target.getPower().setValue(source.getPower().getValue());
- target.getToughness().setValue(source.getToughness().getValue());
-
- return target;
- }
-
- public Card from(Card source, Game game) {
- this.game = game;
- return apply(source);
- }
-}
diff --git a/Mage/src/mage/watchers/common/MiracleWatcher.java b/Mage/src/mage/watchers/common/MiracleWatcher.java
index d844aef8eeb..c2fd6a518e9 100644
--- a/Mage/src/mage/watchers/common/MiracleWatcher.java
+++ b/Mage/src/mage/watchers/common/MiracleWatcher.java
@@ -69,8 +69,10 @@ public class MiracleWatcher extends Watcher {
public void watch(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.UNTAP_STEP_PRE) {
reset();
+ return;
}
- if (event.getType() == GameEvent.EventType.DREW_CARD) {
+ // inital card draws do not trigger miracle so check that phase != null
+ if (game.getPhase() != null && event.getType() == GameEvent.EventType.DREW_CARD) {
UUID playerId = event.getPlayerId();
if (playerId != null) {
Integer amount = amountOfCardsDrawnThisTurn.get(playerId);
@@ -97,7 +99,7 @@ public class MiracleWatcher extends Watcher {
Cards cards = new CardsImpl();
cards.add(card);
controller.lookAtCards("Miracle", cards, game);
- if (controller.chooseUse(Outcome.Benefit, "Reveal card to be able to use Miracle?", game)) {
+ if (controller.chooseUse(Outcome.Benefit, "Reveal " + card.getName() + " to be able to use Miracle?", game)) {
controller.revealCards("Miracle", cards, game);
game.fireEvent(GameEvent.getEvent(GameEvent.EventType.MIRACLE_CARD_REVEALED, card.getId(), card.getId(),controller.getId()));
break;
diff --git a/Utils/keywords.txt b/Utils/keywords.txt
index ad61bda4968..7c0e7fe9236 100644
--- a/Utils/keywords.txt
+++ b/Utils/keywords.txt
@@ -17,6 +17,7 @@ Dredge|number|
Entwine|manaString|
Evoke|card, manaString|
Exalted|new|
+Exploit|new|
Extort|new|
Fear|instance|
First strike|instance|
diff --git a/Utils/known-sets.txt b/Utils/known-sets.txt
index 569564d279d..cbad0ddcaf1 100644
--- a/Utils/known-sets.txt
+++ b/Utils/known-sets.txt
@@ -16,6 +16,7 @@ Conflux|conflux|
Dark Ascension|darkascension|
Darksteel|darksteel|
Dissension|dissension|
+Dragons of Tarkir|dragonsoftarkir|
Dragon's Maze|dragonsmaze|
Duel Decks: Ajani vs. Nicol Bolas|ajanivsnicolbolas|
Duel Decks: Divine vs. Demonic|divinevsdemonic|
@@ -87,7 +88,7 @@ Portal Second Age|portalsecondage|
Portal Three Kingdoms|portalthreekingdoms|
Portal|portal|
Prophecy|prophecy|
-Ravnica: City of Guilds|ravnika|
+Ravnica: City of Guilds|ravnica|
Return to Ravnica|returntoravnica|
Revised Edition|revisededition|
Rise of the Eldrazi|riseoftheeldrazi|
diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt
index 0d46621e4af..5a22dcf2ec2 100644
--- a/Utils/mtg-cards-data.txt
+++ b/Utils/mtg-cards-data.txt
@@ -21030,7 +21030,7 @@ Vampiric Tutor|Visions|22|R|{B}|Instant|||Search your library for a card, then s
Vampirism|Visions|23|U|{1}{B}|Enchantment - Aura|||Enchant creature$When Vampirism enters the battlefield, draw a card at the beginning of the next turn's upkeep.$Enchanted creature gets +1/+1 for each other creature you control.$Other creatures you control get -1/-1.|
Wake of Vultures|Visions|24|C|{3}{B}|Creature - Bird|3|1|Flying${1}{B}, Sacrifice a creature: Regenerate Wake of Vultures.|
Wicked Reward|Visions|25|C|{1}{B}|Instant|||As an additional cost to cast Wicked Reward, sacrifice a creature.$Target creature gets +4/+2 until end of turn.|
-Impulse|Visions|254|C|{1}{U}|Instant|||Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order.|
+Impulse|Visions|34|C|{1}{U}|Instant|||Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order.|
Betrayal|Visions|26|C|{U}|Enchantment - Aura|||Enchant creature an opponent controls$Whenever enchanted creature becomes tapped, you draw a card.|
Breezekeeper|Visions|27|C|{3}{U}|Creature - Djinn|4|4|Flying$Phasing (This phases in or out before you untap during each of your untap steps. While it's phased out, it's treated as though it doesn't exist.)|
Chronatog|Visions|28|R|{1}{U}|Creature - Atog|1|2|{0}: Chronatog gets +3/+3 until end of turn. You skip your next turn. Activate this ability only once each turn.|
@@ -25570,4 +25570,27 @@ Curse of the Bloody Tome|WPN Gateway|80|Special|{2}{U}|Enchantment — Aura Curs
Curse of Thirst|WPN Gateway|81|Special|{4}{B}|Enchantment — Aura Curse|||Enchant player$At the beginning of enchanted player's upkeep, Curse of Thirst deals damage to that player equal to the number of Curses attached to him or her.|
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.|
\ No newline at end of file
+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.)|
+Radiant Purge|Dragons of Tarkir|31|R|{1}{W}|Instant|||Exile target multicolored creature or multicolored enchantment.|
+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.)|
+Sunscorch Regent|Dragons of Tarkir|41|R|{3}{W}{W}|Creature - Dragon|4|3|Flying$Whenever an opponent casts a spell, put a +1/+1 counter on Sunscorch Regent and you gain 1 life.|
+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's Assassin|Dragons of Tarkir|121|R|{1}{B}|Creature - Human Assassin|2|1|Creatures with power greater than Silumgar's Assassin's power can't block it.$Megamorph {2}{B} (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.)$When Silumgar's Assassin is turned face up, destroy target creature with power 3 or less an opponent controls.|
+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 {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.)|
+Thunderbreak Regent|Dragons of Tarkir|162|R|{2}{R}{R}|Creature - Dragon|4|4|Flying$Whenever a Dragon you control becomes the target of a spell or ability your opponent controls, Thunderbreak Regent deals 3 damage to that player.|
+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.)|
+Shaman of Forgotten Ways|Dragons of Tarkir|204|M|{2}G}|Creature - Human Shaman| 2|3|{T}:Add two mana in any combination of colors to your mana pool. Spend this mana only to cast creature spells.$Formidable - {9}{G}{G},{T}:Each player's life total becomes the number of creatures he or she controls. Acitave the ability only if creatures you control have total power 8 or greater.|
+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.|
+Arashin Sovereign|Dragons of Tarkir|212|R|{5}{G}{W}|Creature - Dragon|6|6|Flying$When Arashin Sovereign dies, you may put it on the top or bottom of its owner's library.|
+Boltwing Marauder|Dragons of Tarkir|214|R|{3}{B}{R}|Creature - Dragon|5|4|Flying$Whenever another creature enters the battlefield under your control, target creature gets +2/+0 until end of turn.|
+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.|
+Harbinger of the Hunt|Dragons of Tarkir|223|R|{3]{R}{G}|Creature - Dragon|5|3|Flying${2}{R}: Harbinger of the Hunt deals 1 damage to each creature without flying.${2}{G} Harbinger of the Hunt deals 1 damage to each other creature with flying.|
+Necromaster Dragon|Dragons of Tarkir|226|R|{3}U}{B}|Creature - Dragon|4|4|Flying$Whenever Necromaster Dragon deals combat damage to a player, you may pay {2}. If you do, put a 2/2 black Zombie creature token onto the battlefield and each opponent puts the top two cards of his or her library into his or her graveyard.|
+Ojutai's Command|Dragons of Tarkir|227|R|{2}{W}{U}|Instant|||Choose two - Return target creature card with converted mana cost 2 or less from your graveyard to the battlefield; or You gain 4 life; or Counter target creature spell; or Draw a card|
+Pristine Skywise|Dragons of Tarkir|228|R|{4}{W}{U}|Creature - Dragon|6|4|Flying$Whenever you cast a noncreature spell, untap Pristine Skywise. It gains protection from the color of your choice until the end of turn.|
\ No newline at end of file
diff --git a/Utils/mtg-sets-data.txt b/Utils/mtg-sets-data.txt
index b89667a0606..c7a362f0d03 100644
--- a/Utils/mtg-sets-data.txt
+++ b/Utils/mtg-sets-data.txt
@@ -31,6 +31,7 @@ Dissension|DIS|
Deckmasters|DKM|
Dragon's Maze|DGM|
The Dark|DRK|
+Dragons of Tarkir|DTK|
Duel Decks: Ajani vs. Nicol Bolas|DDH|
Duel Decks: Elves vs. Goblins|EVG|
Duel Decks: Divine vs. Demonic|DDC|
diff --git a/Utils/release/getting_implemented_cards.txt b/Utils/release/getting_implemented_cards.txt
index 1049d937e6f..05d870e9f2a 100644
--- a/Utils/release/getting_implemented_cards.txt
+++ b/Utils/release/getting_implemented_cards.txt
@@ -99,6 +99,8 @@ git log ba1fb775b2efd63d4de60786ab9d7857e00c3a57..HEAD --diff-filter=A --name-st
since 1.3.0-2015-02-07v4
git log 7d7afb60d6fbe6d3f15a8fae9af147df3d3f31c6..HEAD --diff-filter=A --name-status | sed -ne "s/^A[^u]Mage.Sets\/src\/mage\/sets\///p" | sort > added_cards.txt
+since 1.3.0-2015-02-07v7
+git log 6bd17716cd23e0f19142fb59c9c1bc44d87441e3..HEAD --diff-filter=A --name-status | sed -ne "s/^A[^u]Mage.Sets\/src\/mage\/sets\///p" | sort > added_cards.txt
3. Copy added_cards.txt to trunk\Utils folder
4. Run script:
diff --git a/pom.xml b/pom.xml
index 2b06250f531..bc9933a845f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,23 +15,30 @@
org.apache.maven.plugins
maven-compiler-plugin
- 2.0.2
+ 3.2
1.7
1.7
UTF-8
+
+ false
+
maven-resources-plugin
- 2.5
+ 2.7
- UTF-8
+ UTF-8
maven-jar-plugin
- 2.4
+ 2.5
@@ -43,17 +50,16 @@
- Mage
Mage.Common
- Mage.Server
- Mage.Sets
Mage.Client
Mage.Plugins
+ Mage
+ Mage.Server
+ Mage.Sets
Mage.Server.Plugins
Mage.Server.Console
Mage.Tests
Mage.Updater
- Mage.Stats
@@ -85,13 +91,18 @@
junit
junit
- 4.11
+ 4.12
log4j
log4j
1.2.17
+
+ org.slf4j
+ slf4j-log4j12
+ 1.7.10
+