getJobs() {
@@ -111,20 +123,23 @@ public class Downloader extends AbstractLaternaBean implements Disposable {
@Override
public void onMessage(DownloadJob job) {
- // start to work
- // the job won't be processed by multiple threads
+ // each 10 threads gets same jobs, but take to work only one NEW
synchronized (job) {
- if (job.getState() != State.NEW) {
- return;
- }
-
- job.doPrepareAndStartWork();
-
- if (job.getState() != State.WORKING) {
+ if (job.getState() == State.NEW) {
+ // take new job
+ job.doPrepareAndStartWork();
+ if (job.getState() != State.WORKING) {
+ logger.warn("Can't prepare symbols download job: " + job.getName());
+ worksCount.countDown();
+ return;
+ }
+ } else {
+ // skip job (other thread takes it)
return;
}
}
+ // real work for new job
// download and save data
try {
Source src = job.getSource();
@@ -132,9 +147,11 @@ public class Downloader extends AbstractLaternaBean implements Disposable {
BoundedRangeModel progress = job.getProgress();
if (dst.isValid()) {
+ // already done
progress.setMaximum(1);
progress.setValue(1);
} else {
+ // downloading
if (dst.exists()) {
try {
dst.delete();
@@ -149,7 +166,7 @@ public class Downloader extends AbstractLaternaBean implements Disposable {
try {
byte[] buf = new byte[8 * 1024];
int total = 0;
- for (int len; (len = is.read(buf)) != -1;) {
+ for (int len; (len = is.read(buf)) != -1; ) {
if (job.getState() == State.ABORTED) {
throw new IOException("Job was aborted");
}
@@ -193,6 +210,8 @@ public class Downloader extends AbstractLaternaBean implements Disposable {
logger.warn("Error resource download " + job.getName() + " from " + job.getSource().toString() + ": " + message);
} catch (IOException ex) {
job.setError(ex);
+ } finally {
+ worksCount.countDown();
}
}
}
diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/lm/AbstractLaternaBean.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/lm/AbstractLaternaBean.java
index be462e18296..224a1b036e6 100644
--- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/lm/AbstractLaternaBean.java
+++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/lm/AbstractLaternaBean.java
@@ -1,6 +1,6 @@
/**
* AbstractLaternaBean.java
- *
+ *
* Created on 25.08.2010
*/
@@ -16,12 +16,12 @@ import org.mage.plugins.card.dl.beans.properties.bound.BoundProperties;
/**
* The class AbstractLaternaBean.
- *
- * @version V0.0 25.08.2010
+ *
* @author Clemens Koza
+ * @version V0.0 25.08.2010
*/
public class AbstractLaternaBean extends AbstractBoundBean {
protected static final Logger log = Logger.getLogger(AbstractLaternaBean.class);
- protected final Properties properties = new BoundProperties(s);
- protected EventListenerList listeners = new EventListenerList();
+ protected final Properties properties = new BoundProperties(s);
+ protected EventListenerList listeners = new EventListenerList();
}
diff --git a/Mage.Common/pom.xml b/Mage.Common/pom.xml
index f1535ccfae1..1347b155386 100644
--- a/Mage.Common/pom.xml
+++ b/Mage.Common/pom.xml
@@ -34,12 +34,12 @@
org.jboss
jboss-common-core
- 2.2.22.GA
+ 2.5.0.Final
jboss
jboss-serialization
- 1.0.3.GA
+ 4.2.2.GA
concurrent
@@ -54,7 +54,7 @@
com.google.code.gson
gson
- 2.8.2
+ 2.8.5
diff --git a/Mage.Common/src/main/java/mage/remote/SessionImpl.java b/Mage.Common/src/main/java/mage/remote/SessionImpl.java
index 38439c01a5b..2dd201d284c 100644
--- a/Mage.Common/src/main/java/mage/remote/SessionImpl.java
+++ b/Mage.Common/src/main/java/mage/remote/SessionImpl.java
@@ -54,7 +54,7 @@ public class SessionImpl implements Session {
private ServerState serverState;
private SessionState sessionState = SessionState.DISCONNECTED;
private Connection connection;
- private final static int PING_CYCLES = 10;
+ private static final int PING_CYCLES = 10;
private final LinkedList pingTime = new LinkedList<>();
private String pingInfo = "";
private static boolean debugMode = false;
diff --git a/Mage.Common/src/main/java/mage/utils/DeckBuilder.java b/Mage.Common/src/main/java/mage/utils/DeckBuilder.java
index 74615c9bffc..6d599f935c6 100644
--- a/Mage.Common/src/main/java/mage/utils/DeckBuilder.java
+++ b/Mage.Common/src/main/java/mage/utils/DeckBuilder.java
@@ -164,10 +164,7 @@ public final class DeckBuilder {
}
}
if (count > 0) {
- Integer typeCount = colorCount.get(symbol);
- if (typeCount == null) {
- typeCount = 0;
- }
+ Integer typeCount = colorCount.getOrDefault(symbol, 0);
typeCount += 1;
colorCount.put(symbol, typeCount);
}
@@ -243,9 +240,9 @@ public final class DeckBuilder {
int type;
if (card.isCreature()) {
type = 10;
- } else if (card.getSubtype(null).contains(SubType.EQUIPMENT)) {
+ } else if (card.hasSubtype(SubType.EQUIPMENT, null)) {
type = 8;
- } else if (card.getSubtype(null).contains(SubType.AURA)) {
+ } else if (card.hasSubtype(SubType.AURA, null)) {
type = 5;
} else if (card.isInstant()) {
type = 7;
@@ -283,10 +280,7 @@ public final class DeckBuilder {
multicolor += 1;
colors.add(symbol);
}
- Integer typeCount = singleCount.get(symbol);
- if (typeCount == null) {
- typeCount = 0;
- }
+ Integer typeCount = singleCount.getOrDefault(symbol, 0);
typeCount += 1;
singleCount.put(symbol, typeCount);
maxSingleCount = Math.max(maxSingleCount, typeCount);
diff --git a/Mage.Common/src/main/java/mage/utils/MageVersion.java b/Mage.Common/src/main/java/mage/utils/MageVersion.java
index fee5ed1286d..f65978c3331 100644
--- a/Mage.Common/src/main/java/mage/utils/MageVersion.java
+++ b/Mage.Common/src/main/java/mage/utils/MageVersion.java
@@ -12,13 +12,13 @@ public class MageVersion implements Serializable, Comparable {
/**
*
*/
- public final static int MAGE_VERSION_MAJOR = 1;
- public final static int MAGE_VERSION_MINOR = 4;
- public final static int MAGE_VERSION_PATCH = 33;
- public final static String MAGE_EDITION_INFO = ""; // set "-beta" for 1.4.32-betaV0
- public final static String MAGE_VERSION_MINOR_PATCH = "V3"; // default
+ public static final int MAGE_VERSION_MAJOR = 1;
+ public static final int MAGE_VERSION_MINOR = 4;
+ public static final int MAGE_VERSION_PATCH = 33;
+ public static final String MAGE_EDITION_INFO = ""; // set "-beta" for 1.4.32-betaV0
+ public static final String MAGE_VERSION_MINOR_PATCH = "V3"; // default
// strict mode
- private final static boolean MAGE_VERSION_MINOR_PATCH_MUST_BE_SAME = true; // set true on uncompatible github changes, set false after new major release (after MAGE_VERSION_PATCH changes)
+ private static final boolean MAGE_VERSION_MINOR_PATCH_MUST_BE_SAME = true; // set true on uncompatible github changes, set false after new major release (after MAGE_VERSION_PATCH changes)
private final int major;
private final int minor;
diff --git a/Mage.Server.Console/pom.xml b/Mage.Server.Console/pom.xml
index 50c953f3acd..eb9475d207c 100644
--- a/Mage.Server.Console/pom.xml
+++ b/Mage.Server.Console/pom.xml
@@ -9,7 +9,6 @@
1.4.33
- org.mage
mage.server.console
jar
Mage Server Console
diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java
index 7f811078456..5015fcf7030 100644
--- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java
+++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java
@@ -1,4 +1,3 @@
-
package mage.player.ai;
import mage.ConditionalMana;
@@ -538,12 +537,10 @@ public class ComputerPlayer extends PlayerImpl implements Player {
if (targets.isEmpty()) {
if (outcome.isGood()) {
if (target.canTarget(getId(), abilityControllerId, source, game)) {
- target.addTarget(abilityControllerId, source, game);
- return true;
+ return tryAddTarget(target, abilityControllerId, source, game);
}
} else if (target.canTarget(getId(), randomOpponentId, source, game)) {
- target.addTarget(randomOpponentId, source, game);
- return true;
+ return tryAddTarget(target, randomOpponentId, source, game);
}
}
@@ -554,20 +551,17 @@ public class ComputerPlayer extends PlayerImpl implements Player {
List alreadyTargeted = target.getTargets();
if (t.canTarget(abilityControllerId, permanent.getId(), source, game)) {
if (alreadyTargeted != null && !alreadyTargeted.contains(permanent.getId())) {
- target.addTarget(permanent.getId(), source, game);
- return true;
+ return tryAddTarget(target, permanent.getId(), source, game);
}
}
}
if (outcome.isGood()) {
if (target.canTarget(getId(), abilityControllerId, source, game)) {
- target.addTarget(abilityControllerId, source, game);
- return true;
+ return tryAddTarget(target, abilityControllerId, source, game);
}
} else if (target.canTarget(getId(), randomOpponentId, source, game)) {
- target.addTarget(randomOpponentId, source, game);
- return true;
+ return tryAddTarget(target, randomOpponentId, source, game);
}
//if (!target.isRequired())
@@ -585,12 +579,10 @@ public class ComputerPlayer extends PlayerImpl implements Player {
if (targets.isEmpty()) {
if (outcome.isGood()) {
if (target.canTarget(getId(), abilityControllerId, source, game)) {
- target.addTarget(abilityControllerId, source, game);
- return true;
+ return tryAddTarget(target, abilityControllerId, source, game);
}
} else if (target.canTarget(getId(), randomOpponentId, source, game)) {
- target.addTarget(randomOpponentId, source, game);
- return true;
+ return tryAddTarget(target, randomOpponentId, source, game);
}
}
@@ -601,20 +593,17 @@ public class ComputerPlayer extends PlayerImpl implements Player {
List alreadyTargeted = target.getTargets();
if (t.canTarget(abilityControllerId, permanent.getId(), source, game)) {
if (alreadyTargeted != null && !alreadyTargeted.contains(permanent.getId())) {
- target.addTarget(permanent.getId(), source, game);
- return true;
+ tryAddTarget(target, permanent.getId(), source, game);
}
}
}
if (outcome.isGood()) {
if (target.canTarget(getId(), abilityControllerId, source, game)) {
- target.addTarget(abilityControllerId, source, game);
- return true;
+ return tryAddTarget(target, abilityControllerId, source, game);
}
} else if (target.canTarget(getId(), randomOpponentId, source, game)) {
- target.addTarget(randomOpponentId, source, game);
- return true;
+ return tryAddTarget(target, randomOpponentId, source, game);
}
//if (!target.isRequired())
@@ -632,12 +621,10 @@ public class ComputerPlayer extends PlayerImpl implements Player {
if (targets.isEmpty()) {
if (outcome.isGood()) {
if (target.canTarget(getId(), abilityControllerId, source, game)) {
- target.addTarget(abilityControllerId, source, game);
- return true;
+ return tryAddTarget(target, abilityControllerId, source, game);
}
} else if (target.canTarget(getId(), randomOpponentId, source, game)) {
- target.addTarget(randomOpponentId, source, game);
- return true;
+ return tryAddTarget(target, randomOpponentId, source, game);
}
}
@@ -648,8 +635,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
List alreadyTargeted = target.getTargets();
if (t.canTarget(abilityControllerId, permanent.getId(), source, game)) {
if (alreadyTargeted != null && !alreadyTargeted.contains(permanent.getId())) {
- target.addTarget(permanent.getId(), source, game);
- return true;
+ return tryAddTarget(target, permanent.getId(), source, game);
}
}
}
@@ -667,12 +653,10 @@ public class ComputerPlayer extends PlayerImpl implements Player {
if (targets.isEmpty()) {
if (outcome.isGood()) {
if (target.canTarget(getId(), abilityControllerId, source, game)) {
- target.addTarget(abilityControllerId, source, game);
- return true;
+ return tryAddTarget(target, abilityControllerId, source, game);
}
} else if (target.canTarget(getId(), randomOpponentId, source, game)) {
- target.addTarget(randomOpponentId, source, game);
- return true;
+ return tryAddTarget(target, randomOpponentId, source, game);
}
}
@@ -683,20 +667,17 @@ public class ComputerPlayer extends PlayerImpl implements Player {
List alreadyTargeted = target.getTargets();
if (t.canTarget(abilityControllerId, permanent.getId(), source, game)) {
if (alreadyTargeted != null && !alreadyTargeted.contains(permanent.getId())) {
- target.addTarget(permanent.getId(), source, game);
- return true;
+ return tryAddTarget(target, permanent.getId(), source, game);
}
}
}
if (outcome.isGood()) {
if (target.canTarget(getId(), abilityControllerId, source, game)) {
- target.addTarget(abilityControllerId, source, game);
- return true;
+ return tryAddTarget(target, abilityControllerId, source, game);
}
} else if (target.canTarget(getId(), randomOpponentId, source, game)) {
- target.addTarget(randomOpponentId, source, game);
- return true;
+ return tryAddTarget(target, randomOpponentId, source, game);
}
//if (!target.isRequired())
@@ -710,8 +691,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
}
Card card = pickTarget(cards, outcome, target, source, game);
if (card != null) {
- target.addTarget(card.getId(), source, game);
- return true;
+ return tryAddTarget(target, card.getId(), source, game);
}
//if (!target.isRequired())
return false;
@@ -720,8 +700,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
List cards = new ArrayList<>(game.getPlayer(abilityControllerId).getLibrary().getCards(game));
Card card = pickTarget(cards, outcome, target, source, game);
if (card != null) {
- target.addTarget(card.getId(), source, game);
- return true;
+ return tryAddTarget(target, card.getId(), source, game);
}
return false;
}
@@ -731,6 +710,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
Card card = pickTarget(cards, outcome, target, source, game);
if (card != null) {
target.addTarget(card.getId(), source, game);
+ cards.remove(card); // pickTarget don't remove cards (only on second+ tries)
}
}
return target.isChosen();
@@ -739,8 +719,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
if (!game.getStack().isEmpty()) {
for (StackObject o : game.getStack()) {
if (o instanceof Spell && !source.getId().equals(o.getStackAbility().getId())) {
- target.addTarget(o.getId(), source, game);
- return true;
+ return tryAddTarget(target, o.getId(), source, game);
}
}
}
@@ -772,8 +751,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
for (StackObject stackObject : game.getStack()) {
if (stackObject instanceof Spell && source != null && !source.getId().equals(stackObject.getStackAbility().getId())) {
if (((TargetSpellOrPermanent) target).getFilter().match(stackObject, game)) {
- target.addTarget(stackObject.getId(), source, game);
- return true;
+ return tryAddTarget(target, stackObject.getId(), source, game);
}
}
}
@@ -790,8 +768,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
}
Card card = pickTarget(cards, outcome, target, source, game);
if (card != null) {
- target.addTarget(card.getId(), source, game);
- return true;
+ return tryAddTarget(target, card.getId(), source, game);
}
//if (!target.isRequired())
return false;
@@ -827,6 +804,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
Card pick = pickTarget(cards, outcome, target, source, game);
if (pick != null) {
target.addTarget(pick.getId(), source, game);
+ cards.remove(pick); // pickTarget don't remove cards (only on second+ tries)
}
}
return target.isChosen();
@@ -844,6 +822,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
Card pick = pickTarget(cards, outcome, target, source, game);
if (pick != null) {
target.addTarget(pick.getId(), source, game);
+ cards.remove(pick); // pickTarget don't remove cards (only on second+ tries)
}
}
return target.isChosen();
@@ -874,8 +853,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
}
Card card = pickTarget(cards, outcome, target, source, game);
if (card != null) {
- target.addTarget(card.getId(), source, game);
- return true;
+ return tryAddTarget(target, card.getId(), source, game);
}
}
@@ -914,8 +892,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
if (target.getOriginalTarget() instanceof TargetCreatureOrPlayerAmount
|| target.getOriginalTarget() instanceof TargetAnyTargetAmount) {
if (outcome == Outcome.Damage && game.getPlayer(opponentId).getLife() <= target.getAmountRemaining()) {
- target.addTarget(opponentId, target.getAmountRemaining(), source, game);
- return true;
+ return tryAddTarget(target, opponentId, target.getAmountRemaining(), source, game);
}
List targets;
if (outcome.isGood()) {
@@ -926,21 +903,17 @@ public class ComputerPlayer extends PlayerImpl implements Player {
for (Permanent permanent : targets) {
if (target.canTarget(getId(), permanent.getId(), source, game)) {
if (permanent.getToughness().getValue() <= target.getAmountRemaining()) {
- target.addTarget(permanent.getId(), permanent.getToughness().getValue(), source, game);
- return true;
+ return tryAddTarget(target, permanent.getId(), permanent.getToughness().getValue(), source, game);
}
}
}
if (outcome.isGood() && target.canTarget(getId(), getId(), source, game)) {
- target.addTarget(opponentId, target.getAmountRemaining(), source, game);
- return true;
+ return tryAddTarget(target, opponentId, target.getAmountRemaining(), source, game);
} else if (target.canTarget(getId(), opponentId, source, game)) {
// no permanent target so take opponent
- target.addTarget(opponentId, target.getAmountRemaining(), source, game);
- return true;
+ return tryAddTarget(target, opponentId, target.getAmountRemaining(), source, game);
} else if (target.canTarget(getId(), playerId, source, game)) {
- target.addTarget(opponentId, target.getAmountRemaining(), source, game);
- return true;
+ return tryAddTarget(target, opponentId, target.getAmountRemaining(), source, game);
}
return false;
}
@@ -954,8 +927,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
for (Permanent permanent : targets) {
if (target.canTarget(getId(), permanent.getId(), source, game)) {
if (permanent.getToughness().getValue() <= target.getAmountRemaining()) {
- target.addTarget(permanent.getId(), permanent.getToughness().getValue(), source, game);
- return true;
+ return tryAddTarget(target, permanent.getId(), permanent.getToughness().getValue(), source, game);
}
}
}
@@ -966,16 +938,14 @@ public class ComputerPlayer extends PlayerImpl implements Player {
if (target.canTarget(getId(), permanent.getId(), source, game)) {
if (permanent.isCreature()) {
if (permanent.getToughness().getValue() <= target.getAmountRemaining()) {
- target.addTarget(permanent.getId(), permanent.getToughness().getValue(), source, game);
- return true;
+ tryAddTarget(target, permanent.getId(), permanent.getToughness().getValue(), source, game);
} else {
possibleTarget = permanent;
}
} else if (permanent.isPlaneswalker()) {
int loy = permanent.getCounters(game).getCount(CounterType.LOYALTY);
if (loy <= target.getAmountRemaining()) {
- target.addTarget(permanent.getId(), loy, source, game);
- return true;
+ return tryAddTarget(target, permanent.getId(), loy, source, game);
} else {
possibleTarget = permanent;
}
@@ -984,8 +954,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
}
}
if (possibleTarget != null) {
- target.addTarget(possibleTarget.getId(), target.getAmountRemaining(), source, game);
- return true;
+ return tryAddTarget(target, possibleTarget.getId(), target.getAmountRemaining(), source, game);
}
}
}
@@ -1653,7 +1622,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
cardChoices.remove(card);
} else {
// We don't have any valid target to choose so stop choosing
- return target.getTargets().size() < target.getNumberOfTargets();
+ return target.getTargets().size() >= target.getNumberOfTargets();
}
if (outcome == Outcome.Neutral && target.getTargets().size() > target.getNumberOfTargets() + (target.getMaxNumberOfTargets() - target.getNumberOfTargets()) / 2) {
return true;
@@ -1677,7 +1646,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
cardChoices.remove(card);
} else {
// We don't have any valid target to choose so stop choosing
- break;
+ return target.getTargets().size() >= target.getNumberOfTargets();
}
if (outcome == Outcome.Neutral && target.getTargets().size() > target.getNumberOfTargets() + (target.getMaxNumberOfTargets() - target.getNumberOfTargets()) / 2) {
return true;
@@ -2438,6 +2407,23 @@ public class ComputerPlayer extends PlayerImpl implements Player {
return new ComputerPlayer(this);
}
+ private boolean tryAddTarget(Target target, UUID id, Ability source, Game game) {
+ // workaround to to check successfull targets add
+ int before = target.getTargets().size();
+ target.addTarget(id, source, game);
+ int after = target.getTargets().size();
+ return before != after;
+ }
+
+ private boolean tryAddTarget(Target target, UUID id, int amount, Ability source, Game game) {
+ // workaround to to check successfull targets add
+ int before = target.getTargets().size();
+ target.addTarget(id, amount, source, game);
+ int after = target.getTargets().size();
+ return before != after;
+ }
+
+
/**
* Sets a possible target player
*/
diff --git a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/SimulatedPlayerMCTS.java b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/SimulatedPlayerMCTS.java
index 50e33f233ca..37de07485a3 100644
--- a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/SimulatedPlayerMCTS.java
+++ b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/SimulatedPlayerMCTS.java
@@ -234,7 +234,7 @@ public class SimulatedPlayerMCTS extends MCTSPlayer {
}
}
if (possibleTargets.size() == 1) {
- target.addTarget(possibleTargets.iterator().next(), source, game);
+ target.addTarget(possibleTargets.iterator().next(), source, game); // todo: addtryaddtarget or return type (see computerPlayer)
return true;
}
Iterator it = possibleTargets.iterator();
@@ -243,7 +243,7 @@ public class SimulatedPlayerMCTS extends MCTSPlayer {
for (int i = 0; i < targetNum; i++) {
targetId = it.next();
}
- target.addTarget(targetId, source, game);
+ target.addTarget(targetId, source, game);// todo: addtryaddtarget or return type (see computerPlayer)
return true;
}
@@ -297,7 +297,7 @@ public class SimulatedPlayerMCTS extends MCTSPlayer {
}
Card card = cards.getRandom(game);
if (card != null) {
- target.addTarget(card.getId(), source, game);
+ target.addTarget(card.getId(), source, game); // todo: addtryaddtarget or return type (see computerPlayer)
return true;
}
return false;
@@ -315,7 +315,7 @@ public class SimulatedPlayerMCTS extends MCTSPlayer {
}
}
if (possibleTargets.size() == 1) {
- target.addTarget(possibleTargets.iterator().next(), target.getAmountRemaining(), source, game);
+ target.addTarget(possibleTargets.iterator().next(), target.getAmountRemaining(), source, game); // todo: addtryaddtarget or return type (see computerPlayer)
return true;
}
Iterator it = possibleTargets.iterator();
@@ -324,7 +324,7 @@ public class SimulatedPlayerMCTS extends MCTSPlayer {
for (int i = 0; i < targetNum; i++) {
targetId = it.next();
}
- target.addTarget(targetId, RandomUtil.nextInt(target.getAmountRemaining()) + 1, source, game);
+ target.addTarget(targetId, RandomUtil.nextInt(target.getAmountRemaining()) + 1, source, game); // todo: addtryaddtarget or return type (see computerPlayer)
return true;
}
diff --git a/Mage.Server/pom.xml b/Mage.Server/pom.xml
index 4b762aa1d1a..d1f63fcfa66 100644
--- a/Mage.Server/pom.xml
+++ b/Mage.Server/pom.xml
@@ -42,7 +42,13 @@
com.sun.xml.bind
jaxb-impl
- 2.1.17
+ 2.3.2
+
+
+
+ org.glassfish.jaxb
+ jaxb-runtime
+ 2.3.2
log4j
@@ -200,31 +206,31 @@
com.google.api-client
google-api-client
- 1.25.0
+ 1.28.0
jar
com.google.apis
google-api-services-gmail
- v1-rev82-1.23.0
+ v1-rev20190120-1.28.0
jar
com.google.oauth-client
google-oauth-client-java6
- 1.25.0
+ 1.28.0
jar
com.google.oauth-client
google-oauth-client-jetty
- 1.25.0
+ 1.28.0
jar
javax.mail
mail
- 1.4.7
+ 1.5.0-b01
jar
diff --git a/Mage.Server/src/main/java/mage/server/AuthorizedUserRepository.java b/Mage.Server/src/main/java/mage/server/AuthorizedUserRepository.java
index a0817049441..f1915e72f11 100644
--- a/Mage.Server/src/main/java/mage/server/AuthorizedUserRepository.java
+++ b/Mage.Server/src/main/java/mage/server/AuthorizedUserRepository.java
@@ -9,9 +9,6 @@ import com.j256.ormlite.stmt.SelectArg;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.support.DatabaseConnection;
import com.j256.ormlite.table.TableUtils;
-import java.io.File;
-import java.sql.SQLException;
-import java.util.List;
import mage.cards.repository.CardRepository;
import mage.cards.repository.RepositoryUtil;
import org.apache.log4j.Logger;
@@ -21,6 +18,10 @@ import org.apache.shiro.crypto.hash.Hash;
import org.apache.shiro.crypto.hash.Sha256Hash;
import org.apache.shiro.crypto.hash.SimpleHash;
+import java.io.File;
+import java.sql.SQLException;
+import java.util.List;
+
public enum AuthorizedUserRepository {
instance;
@@ -108,7 +109,7 @@ public enum AuthorizedUserRepository {
public void closeDB() {
try {
if (dao != null && dao.getConnectionSource() != null) {
- DatabaseConnection conn = dao.getConnectionSource().getReadWriteConnection();
+ DatabaseConnection conn = dao.getConnectionSource().getReadWriteConnection(dao.getTableName());
conn.executeStatement("shutdown compact", 0);
}
} catch (SQLException ex) {
diff --git a/Mage.Server/src/main/java/mage/server/Session.java b/Mage.Server/src/main/java/mage/server/Session.java
index 39475db9237..be7d0357507 100644
--- a/Mage.Server/src/main/java/mage/server/Session.java
+++ b/Mage.Server/src/main/java/mage/server/Session.java
@@ -30,8 +30,8 @@ import org.jboss.remoting.callback.InvokerCallbackHandler;
public class Session {
private static final Logger logger = Logger.getLogger(Session.class);
- private final static Pattern alphabetsPattern = Pattern.compile("[a-zA-Z]");
- private final static Pattern digitsPattern = Pattern.compile("[0-9]");
+ private static final Pattern alphabetsPattern = Pattern.compile("[a-zA-Z]");
+ private static final Pattern digitsPattern = Pattern.compile("[0-9]");
private final String sessionId;
private UUID userId;
diff --git a/Mage.Server/src/main/java/mage/server/UserManager.java b/Mage.Server/src/main/java/mage/server/UserManager.java
index a3c1c43842e..c1cf20b528a 100644
--- a/Mage.Server/src/main/java/mage/server/UserManager.java
+++ b/Mage.Server/src/main/java/mage/server/UserManager.java
@@ -29,7 +29,6 @@ public enum UserManager {
private List userInfoList = new ArrayList<>();
- private static final Logger LOGGER = Logger.getLogger(UserManager.class);
private final ReadWriteLock lock = new ReentrantReadWriteLock();
private final ConcurrentHashMap users = new ConcurrentHashMap<>();
@@ -59,7 +58,7 @@ public enum UserManager {
public Optional getUser(UUID userId) {
if (!users.containsKey(userId)) {
- LOGGER.trace(String.format("User with id %s could not be found", userId));
+ logger.warn(String.format("User with id %s could not be found", userId));;
return Optional.empty();
} else {
return Optional.of(users.get(userId));
@@ -130,10 +129,10 @@ public enum UserManager {
-> USER_EXECUTOR.execute(
() -> {
try {
- LOGGER.info("USER REMOVE - " + user.getName() + " (" + reason.toString() + ") userId: " + userId + " [" + user.getGameInfo() + ']');
+ logger.info("USER REMOVE - " + user.getName() + " (" + reason.toString() + ") userId: " + userId + " [" + user.getGameInfo() + ']');
user.removeUserFromAllTables(reason);
ChatManager.instance.removeUser(user.getId(), reason);
- LOGGER.debug("USER REMOVE END - " + user.getName());
+ logger.debug("USER REMOVE END - " + user.getName());
} catch (Exception ex) {
handleException(ex);
}
@@ -248,12 +247,12 @@ public enum UserManager {
public void handleException(Exception ex) {
if (ex != null) {
- LOGGER.fatal("User manager exception ", ex);
+ logger.fatal("User manager exception ", ex);
if (ex.getStackTrace() != null) {
- LOGGER.fatal(ex.getStackTrace());
+ logger.fatal(ex.getStackTrace());
}
} else {
- LOGGER.fatal("User manager exception - null");
+ logger.fatal("User manager exception - null");
}
}
diff --git a/Mage.Server/src/main/java/mage/server/draft/DraftSession.java b/Mage.Server/src/main/java/mage/server/draft/DraftSession.java
index 1ab6320e97d..d34848fdb10 100644
--- a/Mage.Server/src/main/java/mage/server/draft/DraftSession.java
+++ b/Mage.Server/src/main/java/mage/server/draft/DraftSession.java
@@ -24,7 +24,7 @@ import org.apache.log4j.Logger;
*/
public class DraftSession {
- protected final static Logger logger = Logger.getLogger(DraftSession.class);
+ protected static final Logger logger = Logger.getLogger(DraftSession.class);
protected final UUID userId;
protected final UUID playerId;
diff --git a/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java b/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java
index daa075be50c..086a1cc04d1 100644
--- a/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java
+++ b/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java
@@ -25,7 +25,7 @@ import java.util.UUID;
*/
public class GameSessionWatcher {
- protected final static Logger logger = Logger.getLogger(GameSessionWatcher.class);
+ protected static final Logger logger = Logger.getLogger(GameSessionWatcher.class);
protected final UUID userId;
protected final Game game;
diff --git a/Mage.Server/src/main/java/mage/server/record/TableRecordRepository.java b/Mage.Server/src/main/java/mage/server/record/TableRecordRepository.java
index c5fec8d5c97..d6d7997c41f 100644
--- a/Mage.Server/src/main/java/mage/server/record/TableRecordRepository.java
+++ b/Mage.Server/src/main/java/mage/server/record/TableRecordRepository.java
@@ -4,15 +4,18 @@ import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.dao.DaoManager;
import com.j256.ormlite.jdbc.JdbcConnectionSource;
import com.j256.ormlite.stmt.QueryBuilder;
+import com.j256.ormlite.stmt.SelectArg;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.support.DatabaseConnection;
import com.j256.ormlite.table.TableUtils;
-import java.io.File;
-import java.sql.SQLException;
-import java.util.List;
import mage.cards.repository.RepositoryUtil;
import org.apache.log4j.Logger;
+import java.io.File;
+import java.sql.SQLException;
+import java.util.Collections;
+import java.util.List;
+
public enum TableRecordRepository {
instance;
@@ -55,19 +58,19 @@ public enum TableRecordRepository {
public List getAfter(long endTimeMs) {
try {
QueryBuilder qb = dao.queryBuilder();
- qb.where().gt("endTimeMs", endTimeMs);
+ qb.where().gt("endTimeMs", new SelectArg(endTimeMs));
qb.orderBy("endTimeMs", true);
return dao.query(qb.prepare());
} catch (SQLException ex) {
Logger.getLogger(TableRecordRepository.class).error("Error getting table_records from DB - ", ex);
}
- return null;
+ return Collections.emptyList();
}
public void closeDB() {
try {
if (dao != null && dao.getConnectionSource() != null) {
- DatabaseConnection conn = dao.getConnectionSource().getReadWriteConnection();
+ DatabaseConnection conn = dao.getConnectionSource().getReadWriteConnection(dao.getTableName());
conn.executeStatement("shutdown compact", 0);
}
} catch (SQLException ex) {
diff --git a/Mage.Server/src/main/java/mage/server/record/UserStatsRepository.java b/Mage.Server/src/main/java/mage/server/record/UserStatsRepository.java
index b99eeed3026..0bbe5cab296 100644
--- a/Mage.Server/src/main/java/mage/server/record/UserStatsRepository.java
+++ b/Mage.Server/src/main/java/mage/server/record/UserStatsRepository.java
@@ -4,6 +4,7 @@ import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.dao.DaoManager;
import com.j256.ormlite.jdbc.JdbcConnectionSource;
import com.j256.ormlite.stmt.QueryBuilder;
+import com.j256.ormlite.stmt.SelectArg;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.support.DatabaseConnection;
import com.j256.ormlite.table.TableUtils;
@@ -15,10 +16,7 @@ import org.apache.log4j.Logger;
import java.io.File;
import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
public enum UserStatsRepository {
@@ -70,7 +68,7 @@ public enum UserStatsRepository {
public UserStats getUser(String userName) {
try {
QueryBuilder qb = dao.queryBuilder();
- qb.limit(1L).where().eq("userName", userName);
+ qb.limit(1L).where().eq("userName", new SelectArg(userName));
List users = dao.query(qb.prepare());
if (!users.isEmpty()) {
return users.get(0);
@@ -88,17 +86,17 @@ public enum UserStatsRepository {
} catch (SQLException ex) {
Logger.getLogger(UserStatsRepository.class).error("Error getting all users from DB - ", ex);
}
- return null;
+ return Collections.emptyList();
}
public long getLatestEndTimeMs() {
try {
- QueryBuilder qb = dao.queryBuilder();
+ QueryBuilder qb = dao.queryBuilder();
qb.orderBy("endTimeMs", false).limit(1L);
- List users = dao.query(qb.prepare());
+ List users = dao.query(qb.prepare());
if (!users.isEmpty()) {
- return users.get(0).getEndTimeMs();
- }
+ return users.get(0).getEndTimeMs();
+ }
} catch (SQLException ex) {
Logger.getLogger(UserStatsRepository.class).error("Error getting the latest end time from DB - ", ex);
}
@@ -110,7 +108,7 @@ public enum UserStatsRepository {
public List updateUserStats() {
Set updatedUsers = new HashSet<>();
// Lock the DB so that no other updateUserStats runs at the same time.
- synchronized(this) {
+ synchronized (this) {
long latestEndTimeMs = this.getLatestEndTimeMs();
List records = TableRecordRepository.instance.getAfter(latestEndTimeMs);
for (TableRecord record : records) {
@@ -125,9 +123,9 @@ public enum UserStatsRepository {
for (ResultProtos.MatchPlayerProto player : match.getPlayersList()) {
UserStats userStats = this.getUser(player.getName());
ResultProtos.UserStatsProto proto =
- userStats != null
- ? userStats.getProto()
- : ResultProtos.UserStatsProto.newBuilder().setName(player.getName()).build();
+ userStats != null
+ ? userStats.getProto()
+ : ResultProtos.UserStatsProto.newBuilder().setName(player.getName()).build();
ResultProtos.UserStatsProto.Builder builder = ResultProtos.UserStatsProto.newBuilder(proto)
.setMatches(proto.getMatches() + 1);
switch (player.getQuit()) {
@@ -369,7 +367,7 @@ public enum UserStatsRepository {
public void closeDB() {
try {
if (dao != null && dao.getConnectionSource() != null) {
- DatabaseConnection conn = dao.getConnectionSource().getReadWriteConnection();
+ DatabaseConnection conn = dao.getConnectionSource().getReadWriteConnection(dao.getTableName());
conn.executeStatement("shutdown compact", 0);
}
} catch (SQLException ex) {
diff --git a/Mage.Server/src/main/java/mage/server/tournament/TournamentSession.java b/Mage.Server/src/main/java/mage/server/tournament/TournamentSession.java
index c93b8a056fd..33171659910 100644
--- a/Mage.Server/src/main/java/mage/server/tournament/TournamentSession.java
+++ b/Mage.Server/src/main/java/mage/server/tournament/TournamentSession.java
@@ -21,7 +21,7 @@ import org.apache.log4j.Logger;
*/
public class TournamentSession {
- protected final static Logger logger = Logger.getLogger(TournamentSession.class);
+ protected static final Logger logger = Logger.getLogger(TournamentSession.class);
protected final UUID userId;
protected final UUID playerId;
diff --git a/Mage.Server/src/main/java/mage/server/util/Config.java b/Mage.Server/src/main/java/mage/server/util/Config.java
index d21319ccba5..73a1cf7a82f 100644
--- a/Mage.Server/src/main/java/mage/server/util/Config.java
+++ b/Mage.Server/src/main/java/mage/server/util/Config.java
@@ -12,6 +12,8 @@ import org.apache.log4j.Logger;
*/
public final class Config {
+ private Config(){}
+
private static final Logger logger = Logger.getLogger(Config.class);
static {
diff --git a/Mage.Server/src/main/java/mage/server/util/ServerMessagesUtil.java b/Mage.Server/src/main/java/mage/server/util/ServerMessagesUtil.java
index 7c822046cd3..942718882dd 100644
--- a/Mage.Server/src/main/java/mage/server/util/ServerMessagesUtil.java
+++ b/Mage.Server/src/main/java/mage/server/util/ServerMessagesUtil.java
@@ -8,6 +8,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.concurrent.Executors;
@@ -52,7 +53,6 @@ public enum ServerMessagesUtil {
}
-
public List getMessages() {
lock.readLock().lock();
try {
@@ -66,9 +66,7 @@ public enum ServerMessagesUtil {
log.debug("Reading server messages...");
List motdMessages = readFromFile();
List newMessages = new ArrayList<>();
- if (motdMessages != null) {
- newMessages.addAll(motdMessages);
- }
+ newMessages.addAll(motdMessages);
newMessages.add(getServerStatistics());
newMessages.add(getServerStatistics2());
@@ -83,7 +81,7 @@ public enum ServerMessagesUtil {
private List readFromFile() {
if (ignore) {
- return null;
+ return Collections.emptyList();
}
File externalFile = null;
if (pathToExternalMessages != null) {
@@ -120,7 +118,7 @@ public enum ServerMessagesUtil {
}
if (is == null) {
log.warn("Couldn't find server.msg");
- return null;
+ return Collections.emptyList();
}
Scanner scanner = null;
@@ -133,8 +131,8 @@ public enum ServerMessagesUtil {
newMessages.add(message.trim());
}
}
- } catch(Exception e) {
- log.error(e,e);
+ } catch (Exception e) {
+ log.error(e, e);
} finally {
StreamUtils.closeQuietly(scanner);
StreamUtils.closeQuietly(is);
@@ -168,7 +166,7 @@ public enum ServerMessagesUtil {
return statistics.toString();
}
-// private Timer timer = new Timer(1000 * 60, new ActionListener() {
+ // private Timer timer = new Timer(1000 * 60, new ActionListener() {
// public void actionPerformed(ActionEvent e) {
// reloadMessages();
// }
diff --git a/Mage.Server/src/main/java/mage/server/util/Splitter.java b/Mage.Server/src/main/java/mage/server/util/Splitter.java
index 2a1b1f980d4..6290a80d47a 100644
--- a/Mage.Server/src/main/java/mage/server/util/Splitter.java
+++ b/Mage.Server/src/main/java/mage/server/util/Splitter.java
@@ -11,6 +11,8 @@ import mage.players.Player;
*/
public final class Splitter {
+ private Splitter(){}
+
public static List split(Game game, UUID playerId) {
List players = new ArrayList<>();
//players.add(playerId); // add original player
diff --git a/Mage.Server/src/main/java/mage/server/util/SystemUtil.java b/Mage.Server/src/main/java/mage/server/util/SystemUtil.java
index 96a69327d13..382021e4cf6 100644
--- a/Mage.Server/src/main/java/mage/server/util/SystemUtil.java
+++ b/Mage.Server/src/main/java/mage/server/util/SystemUtil.java
@@ -31,6 +31,8 @@ import java.util.stream.Collectors;
*/
public final class SystemUtil {
+ private SystemUtil(){}
+
public static final DateFormat dateFormat = new SimpleDateFormat("yy-M-dd HH:mm:ss");
private static final String INIT_FILE_PATH = "config" + File.separator + "init.txt";
@@ -120,7 +122,7 @@ public final class SystemUtil {
String cardInfo = card.getName() + " - " + card.getExpansionSetCode();
// optional info
- ArrayList resInfo = new ArrayList<>();
+ List resInfo = new ArrayList<>();
for (String param : commandParams) {
switch (param) {
case PARAM_COLOR_COST:
@@ -147,7 +149,7 @@ public final class SystemUtil {
}
}
- if (resInfo.size() > 0) {
+ if (!resInfo.isEmpty()) {
cardInfo += ": " + resInfo.stream().collect(Collectors.joining("; "));
}
@@ -555,12 +557,9 @@ public final class SystemUtil {
* @return
*/
private static Optional findPlayer(Game game, String name) {
- for (Player player : game.getPlayers().values()) {
- if (player.getName().equals(name)) {
- return Optional.of(player);
- }
- }
- return Optional.empty();
+ return game.getPlayers().values().stream()
+ .filter(player -> player.getName().equals(name)).findFirst();
+
}
public static String sanitize(String input) {
diff --git a/Mage.Sets/pom.xml b/Mage.Sets/pom.xml
index 6992395f0d4..14d36bb0f44 100644
--- a/Mage.Sets/pom.xml
+++ b/Mage.Sets/pom.xml
@@ -10,7 +10,6 @@
1.4.33
- org.mage
mage-sets
jar
Mage Sets
diff --git a/Mage.Sets/src/mage/cards/a/AdaptiveAutomaton.java b/Mage.Sets/src/mage/cards/a/AdaptiveAutomaton.java
index 1e1341a51e9..7c23ced8ebe 100644
--- a/Mage.Sets/src/mage/cards/a/AdaptiveAutomaton.java
+++ b/Mage.Sets/src/mage/cards/a/AdaptiveAutomaton.java
@@ -20,7 +20,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class AdaptiveAutomaton extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control of the chosen type");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control of the chosen type");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/a/AgentOfShauku.java b/Mage.Sets/src/mage/cards/a/AgentOfShauku.java
index 974b9bda93f..21093caee9f 100644
--- a/Mage.Sets/src/mage/cards/a/AgentOfShauku.java
+++ b/Mage.Sets/src/mage/cards/a/AgentOfShauku.java
@@ -25,7 +25,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class AgentOfShauku extends CardImpl {
- final static FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
+ static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
public AgentOfShauku(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/a/AjanisLastStand.java b/Mage.Sets/src/mage/cards/a/AjanisLastStand.java
index 8be2b128f18..7e6b59f641b 100644
--- a/Mage.Sets/src/mage/cards/a/AjanisLastStand.java
+++ b/Mage.Sets/src/mage/cards/a/AjanisLastStand.java
@@ -83,8 +83,7 @@ class AjanisLastStandTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD
- && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
if (zEvent.getTarget().isControlledBy(controllerId)
&& (zEvent.getTarget().isCreature()
|| zEvent.getTarget().isPlaneswalker())) {
diff --git a/Mage.Sets/src/mage/cards/a/AltacBloodseeker.java b/Mage.Sets/src/mage/cards/a/AltacBloodseeker.java
index 3f6e056f885..b9d6032bfa6 100644
--- a/Mage.Sets/src/mage/cards/a/AltacBloodseeker.java
+++ b/Mage.Sets/src/mage/cards/a/AltacBloodseeker.java
@@ -25,7 +25,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class AltacBloodseeker extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/a/AmrouSeekers.java b/Mage.Sets/src/mage/cards/a/AmrouSeekers.java
index 006a78032c2..e9f0358e37b 100644
--- a/Mage.Sets/src/mage/cards/a/AmrouSeekers.java
+++ b/Mage.Sets/src/mage/cards/a/AmrouSeekers.java
@@ -22,7 +22,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public final class AmrouSeekers extends CardImpl {
- private final static FilterCreaturePermanent notArtificatOrWhite = new FilterCreaturePermanent("except by artifact creatures and/or white creatures");
+ private static final FilterCreaturePermanent notArtificatOrWhite = new FilterCreaturePermanent("except by artifact creatures and/or white creatures");
static {
notArtificatOrWhite.add(Predicates.not(
diff --git a/Mage.Sets/src/mage/cards/a/AngelOfSanctions.java b/Mage.Sets/src/mage/cards/a/AngelOfSanctions.java
index 2d61c57d491..c6ebd9d003d 100644
--- a/Mage.Sets/src/mage/cards/a/AngelOfSanctions.java
+++ b/Mage.Sets/src/mage/cards/a/AngelOfSanctions.java
@@ -26,7 +26,7 @@ import mage.target.TargetPermanent;
*/
public final class AngelOfSanctions extends CardImpl {
- private final static FilterNonlandPermanent filter = new FilterNonlandPermanent();
+ private static final FilterNonlandPermanent filter = new FilterNonlandPermanent();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/a/AngelsFeather.java b/Mage.Sets/src/mage/cards/a/AngelsFeather.java
index 351a64d2bb4..193eeeefb0c 100644
--- a/Mage.Sets/src/mage/cards/a/AngelsFeather.java
+++ b/Mage.Sets/src/mage/cards/a/AngelsFeather.java
@@ -17,7 +17,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public final class AngelsFeather extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("a white spell");
+ private static final FilterSpell filter = new FilterSpell("a white spell");
static {
filter.add(new ColorPredicate(ObjectColor.WHITE));
diff --git a/Mage.Sets/src/mage/cards/a/AngrathsFury.java b/Mage.Sets/src/mage/cards/a/AngrathsFury.java
index 40cfd164590..dcf0f829f46 100644
--- a/Mage.Sets/src/mage/cards/a/AngrathsFury.java
+++ b/Mage.Sets/src/mage/cards/a/AngrathsFury.java
@@ -20,7 +20,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*/
public final class AngrathsFury extends CardImpl {
- private final static FilterCard filter = new FilterCard("Angrath, Minotaur Pirate");
+ private static final FilterCard filter = new FilterCard("Angrath, Minotaur Pirate");
static {
filter.add(new NamePredicate(filter.getMessage()));
diff --git a/Mage.Sets/src/mage/cards/a/AnimateDead.java b/Mage.Sets/src/mage/cards/a/AnimateDead.java
index c74a187ef30..0f833cc16e8 100644
--- a/Mage.Sets/src/mage/cards/a/AnimateDead.java
+++ b/Mage.Sets/src/mage/cards/a/AnimateDead.java
@@ -189,7 +189,7 @@ class AnimateDeadAttachEffect extends OneShotEffect {
class AnimateDeadChangeAbilityEffect extends ContinuousEffectImpl implements SourceEffect {
- private final static Ability newAbility = new EnchantAbility("creature put onto the battlefield with Animate Dead");
+ private static final Ability newAbility = new EnchantAbility("creature put onto the battlefield with Animate Dead");
static {
newAbility.setRuleAtTheTop(true);
diff --git a/Mage.Sets/src/mage/cards/a/Antagonism.java b/Mage.Sets/src/mage/cards/a/Antagonism.java
index 818a31125e5..0ad3603e87a 100644
--- a/Mage.Sets/src/mage/cards/a/Antagonism.java
+++ b/Mage.Sets/src/mage/cards/a/Antagonism.java
@@ -19,12 +19,12 @@ import mage.watchers.common.BloodthirstWatcher;
*/
public final class Antagonism extends CardImpl {
- private static final String rule = "{this} deals 2 damage to that player unless one of his or her opponents was dealt damage this turn";
+ private static final String rule = "{this} deals 2 damage to that player unless one of their opponents was dealt damage this turn";
public Antagonism(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
- // At the beginning of each player's end step, Antagonism deals 2 damage to that player unless one of his or her opponents was dealt damage this turn.
+ // At the beginning of each player's end step, Antagonism deals 2 damage to that player unless one of their opponents was dealt damage this turn.
this.addAbility(new BeginningOfEndStepTriggeredAbility(new ConditionalOneShotEffect(new DamageTargetEffect(2),
new OpponentWasNotDealtDamageCondition(), rule), TargetController.ANY, false));
diff --git a/Mage.Sets/src/mage/cards/a/AquitectsWill.java b/Mage.Sets/src/mage/cards/a/AquitectsWill.java
index 29ee4554919..b9b1d00d7ff 100644
--- a/Mage.Sets/src/mage/cards/a/AquitectsWill.java
+++ b/Mage.Sets/src/mage/cards/a/AquitectsWill.java
@@ -25,7 +25,7 @@ import java.util.UUID;
*/
public final class AquitectsWill extends CardImpl {
- private final static FilterControlledPermanent filter = new FilterControlledPermanent("Merfolk");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("Merfolk");
static {
filter.add(new SubtypePredicate(SubType.MERFOLK));
diff --git a/Mage.Sets/src/mage/cards/a/ArenaOfTheAncients.java b/Mage.Sets/src/mage/cards/a/ArenaOfTheAncients.java
index 466dcdc9e2c..60f5990d5a3 100644
--- a/Mage.Sets/src/mage/cards/a/ArenaOfTheAncients.java
+++ b/Mage.Sets/src/mage/cards/a/ArenaOfTheAncients.java
@@ -23,7 +23,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*/
public final class ArenaOfTheAncients extends CardImpl {
- private final static FilterCreaturePermanent legendaryFilter = new FilterCreaturePermanent("legendary creatures");
+ private static final FilterCreaturePermanent legendaryFilter = new FilterCreaturePermanent("legendary creatures");
static {
legendaryFilter.add(new SupertypePredicate(SuperType.LEGENDARY));
}
diff --git a/Mage.Sets/src/mage/cards/a/AthreosGodOfPassage.java b/Mage.Sets/src/mage/cards/a/AthreosGodOfPassage.java
index c2d40f3fb84..8bdca274c75 100644
--- a/Mage.Sets/src/mage/cards/a/AthreosGodOfPassage.java
+++ b/Mage.Sets/src/mage/cards/a/AthreosGodOfPassage.java
@@ -144,7 +144,7 @@ class AthreosDiesCreatureTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
if (zEvent.getTarget() != null && filter.match(zEvent.getTarget(), sourceId, controllerId, game)) {
for (Effect effect : this.getEffects()) {
effect.setValue("creatureId", event.getTargetId());
diff --git a/Mage.Sets/src/mage/cards/a/AvoidFate.java b/Mage.Sets/src/mage/cards/a/AvoidFate.java
index c5d9a4834a1..2e8bd468318 100644
--- a/Mage.Sets/src/mage/cards/a/AvoidFate.java
+++ b/Mage.Sets/src/mage/cards/a/AvoidFate.java
@@ -22,7 +22,7 @@ import java.util.UUID;
*/
public final class AvoidFate extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("instant or Aura spell that targets a permanent you control");
+ private static final FilterSpell filter = new FilterSpell("instant or Aura spell that targets a permanent you control");
static {
filter.add(Predicates.or(new CardTypePredicate(CardType.INSTANT), new SubtypePredicate(SubType.AURA)));
diff --git a/Mage.Sets/src/mage/cards/a/AyeshaTanaka.java b/Mage.Sets/src/mage/cards/a/AyeshaTanaka.java
index cf8165cc371..a0aa2952108 100644
--- a/Mage.Sets/src/mage/cards/a/AyeshaTanaka.java
+++ b/Mage.Sets/src/mage/cards/a/AyeshaTanaka.java
@@ -26,7 +26,7 @@ import mage.target.common.TargetActivatedAbility;
*/
public final class AyeshaTanaka extends CardImpl {
- private final static FilterStackObject filter = new FilterStackObject("activated ability from an artifact source");
+ private static final FilterStackObject filter = new FilterStackObject("activated ability from an artifact source");
static {
filter.add(new ArtifactSourcePredicate());
diff --git a/Mage.Sets/src/mage/cards/b/BanisherPriest.java b/Mage.Sets/src/mage/cards/b/BanisherPriest.java
index 8767e9754db..83b8c0fa0f3 100644
--- a/Mage.Sets/src/mage/cards/b/BanisherPriest.java
+++ b/Mage.Sets/src/mage/cards/b/BanisherPriest.java
@@ -28,7 +28,7 @@ import mage.util.CardUtil;
*/
public final class BanisherPriest extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/b/BanishingLight.java b/Mage.Sets/src/mage/cards/b/BanishingLight.java
index 56a3eed0ce7..5383a01ccc0 100644
--- a/Mage.Sets/src/mage/cards/b/BanishingLight.java
+++ b/Mage.Sets/src/mage/cards/b/BanishingLight.java
@@ -21,7 +21,7 @@ import mage.target.TargetPermanent;
*/
public final class BanishingLight extends CardImpl {
- private final static FilterNonlandPermanent filter = new FilterNonlandPermanent();
+ private static final FilterNonlandPermanent filter = new FilterNonlandPermanent();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/b/BaruFistOfKrosa.java b/Mage.Sets/src/mage/cards/b/BaruFistOfKrosa.java
index 4ea8d134617..7cd9d78dcb6 100644
--- a/Mage.Sets/src/mage/cards/b/BaruFistOfKrosa.java
+++ b/Mage.Sets/src/mage/cards/b/BaruFistOfKrosa.java
@@ -70,7 +70,7 @@ public final class BaruFistOfKrosa extends CardImpl {
class BaruFistOfKrosaEffect extends OneShotEffect {
- final static FilterControlledPermanent filter = new FilterControlledLandPermanent("lands you control");
+ static final FilterControlledPermanent filter = new FilterControlledLandPermanent("lands you control");
BaruFistOfKrosaEffect() {
super(Outcome.PutCreatureInPlay);
diff --git a/Mage.Sets/src/mage/cards/b/BastionProtector.java b/Mage.Sets/src/mage/cards/b/BastionProtector.java
index ba1fdaac309..fa5054b1d93 100644
--- a/Mage.Sets/src/mage/cards/b/BastionProtector.java
+++ b/Mage.Sets/src/mage/cards/b/BastionProtector.java
@@ -24,7 +24,7 @@ import mage.filter.predicate.permanent.CommanderPredicate;
*/
public final class BastionProtector extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Commander creatures");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Commander creatures");
static {
filter.add(CommanderPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/b/BishopOfBinding.java b/Mage.Sets/src/mage/cards/b/BishopOfBinding.java
index ac53b0111a0..9b1fccfe486 100644
--- a/Mage.Sets/src/mage/cards/b/BishopOfBinding.java
+++ b/Mage.Sets/src/mage/cards/b/BishopOfBinding.java
@@ -35,7 +35,7 @@ import mage.util.CardUtil;
*/
public final class BishopOfBinding extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/b/BladewingsThrall.java b/Mage.Sets/src/mage/cards/b/BladewingsThrall.java
index f9de91df98b..bac7f52f713 100644
--- a/Mage.Sets/src/mage/cards/b/BladewingsThrall.java
+++ b/Mage.Sets/src/mage/cards/b/BladewingsThrall.java
@@ -25,7 +25,7 @@ import mage.filter.common.FilterCreaturePermanent;
*/
public final class BladewingsThrall extends CardImpl {
- final static private String RULE = "{this} has flying as long as you control a Dragon";
+ static final private String RULE = "{this} has flying as long as you control a Dragon";
public BladewingsThrall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/BlightHerder.java b/Mage.Sets/src/mage/cards/b/BlightHerder.java
index 12c4977360d..598dc52a20e 100644
--- a/Mage.Sets/src/mage/cards/b/BlightHerder.java
+++ b/Mage.Sets/src/mage/cards/b/BlightHerder.java
@@ -48,7 +48,7 @@ public final class BlightHerder extends CardImpl {
class BlightHerderEffect extends OneShotEffect {
- private final static FilterCard filter = new FilterCard("cards your opponents own from exile");
+ private static final FilterCard filter = new FilterCard("cards your opponents own from exile");
static {
filter.add(new OwnerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/b/BloodCursedKnight.java b/Mage.Sets/src/mage/cards/b/BloodCursedKnight.java
index b80b2c8cd78..71adc8a30aa 100644
--- a/Mage.Sets/src/mage/cards/b/BloodCursedKnight.java
+++ b/Mage.Sets/src/mage/cards/b/BloodCursedKnight.java
@@ -24,8 +24,8 @@ import mage.filter.common.FilterControlledEnchantmentPermanent;
*/
public final class BloodCursedKnight extends CardImpl {
- final static private String rule1 = "As long as you control an enchantment, {this} gets +1/+1";
- final static private String rule2 = "and has lifelink";
+ static final private String rule1 = "As long as you control an enchantment, {this} gets +1/+1";
+ static final private String rule2 = "and has lifelink";
public BloodCursedKnight(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/b/Bloodbriar.java b/Mage.Sets/src/mage/cards/b/Bloodbriar.java
index 644927bfcbf..6db0ffa8988 100644
--- a/Mage.Sets/src/mage/cards/b/Bloodbriar.java
+++ b/Mage.Sets/src/mage/cards/b/Bloodbriar.java
@@ -21,7 +21,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class Bloodbriar extends CardImpl {
- private final static FilterPermanent filter = new FilterPermanent("another permanent");
+ private static final FilterPermanent filter = new FilterPermanent("another permanent");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/b/BloodswornSteward.java b/Mage.Sets/src/mage/cards/b/BloodswornSteward.java
index 21ed7ccdc95..10dcbe7f9fc 100644
--- a/Mage.Sets/src/mage/cards/b/BloodswornSteward.java
+++ b/Mage.Sets/src/mage/cards/b/BloodswornSteward.java
@@ -25,7 +25,7 @@ import mage.filter.predicate.permanent.CommanderPredicate;
*/
public final class BloodswornSteward extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Commander creatures");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Commander creatures");
static {
filter.add(CommanderPredicate.instance);
}
diff --git a/Mage.Sets/src/mage/cards/b/BogGlider.java b/Mage.Sets/src/mage/cards/b/BogGlider.java
index ed773d4f405..d00ee5c13b1 100644
--- a/Mage.Sets/src/mage/cards/b/BogGlider.java
+++ b/Mage.Sets/src/mage/cards/b/BogGlider.java
@@ -29,7 +29,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class BogGlider extends CardImpl {
- final static FilterControlledPermanent landFilter = new FilterControlledLandPermanent("a land");
+ static final FilterControlledPermanent landFilter = new FilterControlledLandPermanent("a land");
private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 2 or less");
static {
diff --git a/Mage.Sets/src/mage/cards/b/BoilingEarth.java b/Mage.Sets/src/mage/cards/b/BoilingEarth.java
index a6d410a08f7..bb72e70568b 100644
--- a/Mage.Sets/src/mage/cards/b/BoilingEarth.java
+++ b/Mage.Sets/src/mage/cards/b/BoilingEarth.java
@@ -17,7 +17,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class BoilingEarth extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature your opponents control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature your opponents control");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/b/BoneyardScourge.java b/Mage.Sets/src/mage/cards/b/BoneyardScourge.java
index 4b61d293488..a604ccf7ae1 100644
--- a/Mage.Sets/src/mage/cards/b/BoneyardScourge.java
+++ b/Mage.Sets/src/mage/cards/b/BoneyardScourge.java
@@ -96,7 +96,7 @@ class DiesWhileInGraveyardTriggeredAbility extends TriggeredAbilityImpl {
return false;
}
}
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
if (filter.match(zEvent.getTarget(), sourceId, controllerId, game)) {
return true;
}
diff --git a/Mage.Sets/src/mage/cards/b/BoundByMoonsilver.java b/Mage.Sets/src/mage/cards/b/BoundByMoonsilver.java
index e3350aa8774..6edd91e6fe0 100644
--- a/Mage.Sets/src/mage/cards/b/BoundByMoonsilver.java
+++ b/Mage.Sets/src/mage/cards/b/BoundByMoonsilver.java
@@ -26,7 +26,7 @@ import java.util.UUID;
*/
public final class BoundByMoonsilver extends CardImpl {
- private final static FilterControlledPermanent filter = new FilterControlledPermanent("another permanent");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("another permanent");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/b/BrandedBrawlers.java b/Mage.Sets/src/mage/cards/b/BrandedBrawlers.java
index 469bfcc8850..af4918a29d5 100644
--- a/Mage.Sets/src/mage/cards/b/BrandedBrawlers.java
+++ b/Mage.Sets/src/mage/cards/b/BrandedBrawlers.java
@@ -31,7 +31,7 @@ public final class BrandedBrawlers extends CardImpl {
filter.add(Predicates.not(TappedPredicate.instance));
}
- final static private String rule = "{this} can't block if you control an untapped land";
+ static final private String rule = "{this} can't block if you control an untapped land";
public BrandedBrawlers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/b/BridgeFromBelow.java b/Mage.Sets/src/mage/cards/b/BridgeFromBelow.java
index 41df9ae8fa4..21da232f164 100644
--- a/Mage.Sets/src/mage/cards/b/BridgeFromBelow.java
+++ b/Mage.Sets/src/mage/cards/b/BridgeFromBelow.java
@@ -84,7 +84,7 @@ class BridgeFromBelowAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
if (permanent != null && filter.match(permanent, sourceId, controllerId, game)) {
return true;
diff --git a/Mage.Sets/src/mage/cards/b/BrownOuphe.java b/Mage.Sets/src/mage/cards/b/BrownOuphe.java
index b7ba3b157a6..d41d846a2d9 100644
--- a/Mage.Sets/src/mage/cards/b/BrownOuphe.java
+++ b/Mage.Sets/src/mage/cards/b/BrownOuphe.java
@@ -24,7 +24,7 @@ import mage.target.common.TargetActivatedAbility;
*/
public final class BrownOuphe extends CardImpl {
- private final static FilterStackObject filter = new FilterStackObject("activated ability from an artifact source");
+ private static final FilterStackObject filter = new FilterStackObject("activated ability from an artifact source");
static {
filter.add(new ArtifactSourcePredicate());
diff --git a/Mage.Sets/src/mage/cards/b/BudokaGardener.java b/Mage.Sets/src/mage/cards/b/BudokaGardener.java
index 6bf5ead6b27..309f3980462 100644
--- a/Mage.Sets/src/mage/cards/b/BudokaGardener.java
+++ b/Mage.Sets/src/mage/cards/b/BudokaGardener.java
@@ -56,7 +56,7 @@ public final class BudokaGardener extends CardImpl {
class BudokaGardenerEffect extends OneShotEffect {
- final static FilterControlledPermanent filterLands = new FilterControlledLandPermanent("lands you control");
+ static final FilterControlledPermanent filterLands = new FilterControlledLandPermanent("lands you control");
BudokaGardenerEffect() {
super(Outcome.PutLandInPlay);
diff --git a/Mage.Sets/src/mage/cards/b/BurningEarth.java b/Mage.Sets/src/mage/cards/b/BurningEarth.java
index 885b5517203..901829dc536 100644
--- a/Mage.Sets/src/mage/cards/b/BurningEarth.java
+++ b/Mage.Sets/src/mage/cards/b/BurningEarth.java
@@ -19,7 +19,7 @@ import mage.filter.predicate.mageobject.SupertypePredicate;
*/
public final class BurningEarth extends CardImpl {
- private final static FilterLandPermanent filter = new FilterLandPermanent("a player taps a nonbasic land");
+ private static final FilterLandPermanent filter = new FilterLandPermanent("a player taps a nonbasic land");
static {
filter.add(Predicates.not(new SupertypePredicate(SuperType.BASIC)));
diff --git a/Mage.Sets/src/mage/cards/c/CapturedByTheConsulate.java b/Mage.Sets/src/mage/cards/c/CapturedByTheConsulate.java
index ea9e9137709..66dedbd9d56 100644
--- a/Mage.Sets/src/mage/cards/c/CapturedByTheConsulate.java
+++ b/Mage.Sets/src/mage/cards/c/CapturedByTheConsulate.java
@@ -33,7 +33,7 @@ import mage.target.targetpointer.FixedTarget;
*/
public final class CapturedByTheConsulate extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(new ControllerPredicate(TargetController.NOT_YOU));
diff --git a/Mage.Sets/src/mage/cards/c/CastOut.java b/Mage.Sets/src/mage/cards/c/CastOut.java
index ea4dd6d9530..80465f8c2b4 100644
--- a/Mage.Sets/src/mage/cards/c/CastOut.java
+++ b/Mage.Sets/src/mage/cards/c/CastOut.java
@@ -24,7 +24,7 @@ import mage.target.TargetPermanent;
*/
public final class CastOut extends CardImpl {
- private final static FilterNonlandPermanent filter = new FilterNonlandPermanent();
+ private static final FilterNonlandPermanent filter = new FilterNonlandPermanent();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/c/CatacombSifter.java b/Mage.Sets/src/mage/cards/c/CatacombSifter.java
index 39d60404112..1ea063803cf 100644
--- a/Mage.Sets/src/mage/cards/c/CatacombSifter.java
+++ b/Mage.Sets/src/mage/cards/c/CatacombSifter.java
@@ -24,7 +24,7 @@ import mage.game.permanent.token.EldraziScionToken;
*/
public final class CatacombSifter extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
filter.add(new ControllerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfDusk.java b/Mage.Sets/src/mage/cards/c/ChampionOfDusk.java
index e5c218c007d..dedfdaa9def 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionOfDusk.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionOfDusk.java
@@ -23,7 +23,7 @@ import java.util.UUID;
*/
public final class ChampionOfDusk extends CardImpl {
- private final static FilterControlledPermanent filter = new FilterControlledPermanent("Vampires you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("Vampires you control");
static {
filter.add(new SubtypePredicate(SubType.VAMPIRE));
diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java b/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java
index 00e0561590b..c7c320feedf 100644
--- a/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java
+++ b/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java
@@ -23,7 +23,7 @@ import java.util.UUID;
*/
public final class ChampionOfLambholt extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/c/ChandrasDefeat.java b/Mage.Sets/src/mage/cards/c/ChandrasDefeat.java
index 23f2a0ca920..0da144b19c7 100644
--- a/Mage.Sets/src/mage/cards/c/ChandrasDefeat.java
+++ b/Mage.Sets/src/mage/cards/c/ChandrasDefeat.java
@@ -26,7 +26,7 @@ import mage.target.TargetPermanent;
*/
public final class ChandrasDefeat extends CardImpl {
- private final static FilterPermanent filter = new FilterPermanent("creature or planeswalker");
+ private static final FilterPermanent filter = new FilterPermanent("creature or planeswalker");
static {
filter.add(new ColorPredicate(ObjectColor.RED));
diff --git a/Mage.Sets/src/mage/cards/c/ChandrasOutburst.java b/Mage.Sets/src/mage/cards/c/ChandrasOutburst.java
index 6d682588f90..5d70eb1fb42 100644
--- a/Mage.Sets/src/mage/cards/c/ChandrasOutburst.java
+++ b/Mage.Sets/src/mage/cards/c/ChandrasOutburst.java
@@ -17,7 +17,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*/
public final class ChandrasOutburst extends CardImpl {
- private final static FilterCard filter = new FilterCard("Chandra, Bold Pyromancer");
+ private static final FilterCard filter = new FilterCard("Chandra, Bold Pyromancer");
static {
filter.add(new NamePredicate("Chandra, Bold Pyromancer"));
diff --git a/Mage.Sets/src/mage/cards/c/ChimericEgg.java b/Mage.Sets/src/mage/cards/c/ChimericEgg.java
index 88816bba41f..55087136387 100644
--- a/Mage.Sets/src/mage/cards/c/ChimericEgg.java
+++ b/Mage.Sets/src/mage/cards/c/ChimericEgg.java
@@ -31,7 +31,7 @@ import mage.game.permanent.token.custom.CreatureToken;
*/
public final class ChimericEgg extends CardImpl {
- private final static FilterSpell nonArtifactFilter = new FilterSpell("a nonartifact spell");
+ private static final FilterSpell nonArtifactFilter = new FilterSpell("a nonartifact spell");
static {
nonArtifactFilter.add(Predicates.not(new CardTypePredicate(CardType.ARTIFACT)));
diff --git a/Mage.Sets/src/mage/cards/c/CitadelSiege.java b/Mage.Sets/src/mage/cards/c/CitadelSiege.java
index 99948a47061..84764fb93db 100644
--- a/Mage.Sets/src/mage/cards/c/CitadelSiege.java
+++ b/Mage.Sets/src/mage/cards/c/CitadelSiege.java
@@ -28,9 +28,9 @@ import java.util.UUID;
*/
public final class CitadelSiege extends CardImpl {
- private final static String ruleTrigger1 = "&bull Khans — At the beginning of combat on your turn, put two +1/+1 counters on target creature you control.";
- private final static String ruleTrigger2 = "&bull Dragons — At the beginning of combat on each opponent's turn, tap target creature that player controls.";
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature controlled by the active player");
+ private static final String ruleTrigger1 = "&bull Khans — At the beginning of combat on your turn, put two +1/+1 counters on target creature you control.";
+ private static final String ruleTrigger2 = "&bull Dragons — At the beginning of combat on each opponent's turn, tap target creature that player controls.";
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature controlled by the active player");
static {
filter.add(CitadelSiegePredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/c/CloseQuarters.java b/Mage.Sets/src/mage/cards/c/CloseQuarters.java
index 17cbd66ffd1..1d0fa5519cc 100644
--- a/Mage.Sets/src/mage/cards/c/CloseQuarters.java
+++ b/Mage.Sets/src/mage/cards/c/CloseQuarters.java
@@ -19,7 +19,7 @@ import mage.target.common.TargetAnyTarget;
*/
public final class CloseQuarters extends CardImpl {
- final static private FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
+ static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/c/CombustibleGearhulk.java b/Mage.Sets/src/mage/cards/c/CombustibleGearhulk.java
index 056ea5c7438..4b3cc8e09f6 100644
--- a/Mage.Sets/src/mage/cards/c/CombustibleGearhulk.java
+++ b/Mage.Sets/src/mage/cards/c/CombustibleGearhulk.java
@@ -1,4 +1,3 @@
-
package mage.cards.c;
import java.util.Set;
@@ -19,7 +18,6 @@ import mage.constants.Zone;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
-import mage.target.Target;
import mage.target.common.TargetOpponent;
/**
@@ -29,7 +27,7 @@ import mage.target.common.TargetOpponent;
public final class CombustibleGearhulk extends CardImpl {
public CombustibleGearhulk(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{R}{R}");
+ super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}{R}{R}");
this.subtype.add(SubType.CONSTRUCT);
this.power = new MageInt(6);
this.toughness = new MageInt(6);
@@ -75,29 +73,19 @@ class CombustibleGearhulkEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
if (controller != null && sourcePermanent != null) {
- UUID opponentId;
- if (game.getOpponents(controller.getId()).size() == 1) {
- opponentId = game.getOpponents(controller.getId()).iterator().next();
- } else {
- Target target = new TargetOpponent();
- controller.choose(outcome, target, source.getSourceId(), game);
- opponentId = target.getFirstTarget();
- }
- if (opponentId != null) {
- Player opponent = game.getPlayer(opponentId);
- if (opponent != null) {
- String questionDrawThree = "Have " + controller.getLogName() + " draw three cards?";
- if (opponent.chooseUse(outcome, questionDrawThree, source, game)) {
- if (!game.isSimulation()) {
- game.informPlayers(opponent.getLogName() + " lets " + controller.getLogName() + " draw three cards");
- }
- return new DrawCardSourceControllerEffect(3).apply(game, source);
- } else {
- if (!game.isSimulation()) {
- game.informPlayers(opponent.getLogName() + " does not let " + controller.getLogName() + " draw three cards");
- }
- return new CombustibleGearhulkMillAndDamageEffect().apply(game, source);
+ Player opponent = game.getPlayer(source.getFirstTarget());
+ if (opponent != null) {
+ String questionDrawThree = "Have " + controller.getLogName() + " draw three cards?";
+ if (opponent.chooseUse(outcome, questionDrawThree, source, game)) {
+ if (!game.isSimulation()) {
+ game.informPlayers(opponent.getLogName() + " lets " + controller.getLogName() + " draw three cards");
}
+ return new DrawCardSourceControllerEffect(3).apply(game, source);
+ } else {
+ if (!game.isSimulation()) {
+ game.informPlayers(opponent.getLogName() + " does not let " + controller.getLogName() + " draw three cards");
+ }
+ return new CombustibleGearhulkMillAndDamageEffect().apply(game, source);
}
}
}
diff --git a/Mage.Sets/src/mage/cards/c/ConclaveTribunal.java b/Mage.Sets/src/mage/cards/c/ConclaveTribunal.java
index d06e3d72f86..ca5fec47016 100644
--- a/Mage.Sets/src/mage/cards/c/ConclaveTribunal.java
+++ b/Mage.Sets/src/mage/cards/c/ConclaveTribunal.java
@@ -21,7 +21,7 @@ import mage.target.TargetPermanent;
*/
public final class ConclaveTribunal extends CardImpl {
- private final static FilterNonlandPermanent filter = new FilterNonlandPermanent();
+ private static final FilterNonlandPermanent filter = new FilterNonlandPermanent();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/c/ConfiscationCoup.java b/Mage.Sets/src/mage/cards/c/ConfiscationCoup.java
index ff2bc46367d..7d3d9591253 100644
--- a/Mage.Sets/src/mage/cards/c/ConfiscationCoup.java
+++ b/Mage.Sets/src/mage/cards/c/ConfiscationCoup.java
@@ -29,7 +29,7 @@ import mage.target.targetpointer.FixedTarget;
*/
public final class ConfiscationCoup extends CardImpl {
- private final static FilterPermanent filter = new FilterPermanent("creature or artifact");
+ private static final FilterPermanent filter = new FilterPermanent("creature or artifact");
static {
filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), new CardTypePredicate(CardType.ARTIFACT)));
diff --git a/Mage.Sets/src/mage/cards/c/Confound.java b/Mage.Sets/src/mage/cards/c/Confound.java
index 6a04ca4571b..1a46edb59c5 100644
--- a/Mage.Sets/src/mage/cards/c/Confound.java
+++ b/Mage.Sets/src/mage/cards/c/Confound.java
@@ -18,7 +18,7 @@ import mage.target.TargetSpell;
*/
public final class Confound extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("spell that targets a creature");
+ private static final FilterSpell filter = new FilterSpell("spell that targets a creature");
static {
filter.add(new TargetsPermanentPredicate(new FilterCreaturePermanent()));
diff --git a/Mage.Sets/src/mage/cards/c/ConsulsShieldguard.java b/Mage.Sets/src/mage/cards/c/ConsulsShieldguard.java
index 16798cb14c1..29fe70cdc5d 100644
--- a/Mage.Sets/src/mage/cards/c/ConsulsShieldguard.java
+++ b/Mage.Sets/src/mage/cards/c/ConsulsShieldguard.java
@@ -26,7 +26,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class ConsulsShieldguard extends CardImpl {
- private final static FilterAttackingCreature filter = new FilterAttackingCreature();
+ private static final FilterAttackingCreature filter = new FilterAttackingCreature();
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/c/CrimsonHonorGuard.java b/Mage.Sets/src/mage/cards/c/CrimsonHonorGuard.java
index 147aeb97ba3..4d8f96c8abd 100644
--- a/Mage.Sets/src/mage/cards/c/CrimsonHonorGuard.java
+++ b/Mage.Sets/src/mage/cards/c/CrimsonHonorGuard.java
@@ -53,7 +53,7 @@ public final class CrimsonHonorGuard extends CardImpl {
class CrimsonHonorGuardEffect extends OneShotEffect {
- private final static FilterPermanent filter = new FilterPermanent("Commander");
+ private static final FilterPermanent filter = new FilterPermanent("Commander");
static {
filter.add(CommanderPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java b/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java
index 0cfc1cde782..91088cacf8d 100644
--- a/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java
+++ b/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java
@@ -24,7 +24,7 @@ import mage.target.common.TargetAttackingCreature;
*/
public final class CrossroadsConsecrator extends CardImpl {
- private final static FilterAttackingCreature filter = new FilterAttackingCreature("attacking Human");
+ private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking Human");
static {
filter.add(new SubtypePredicate(SubType.HUMAN));
diff --git a/Mage.Sets/src/mage/cards/c/CruelRevival.java b/Mage.Sets/src/mage/cards/c/CruelRevival.java
index 8b06c4f8365..47a862248d2 100644
--- a/Mage.Sets/src/mage/cards/c/CruelRevival.java
+++ b/Mage.Sets/src/mage/cards/c/CruelRevival.java
@@ -26,8 +26,8 @@ import java.util.UUID;
*/
public final class CruelRevival extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Zombie creature");
- private final static FilterCard filter2 = new FilterCard("Zombie card from your graveyard");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Zombie creature");
+ private static final FilterCard filter2 = new FilterCard("Zombie card from your graveyard");
static {
filter.add(new CardTypePredicate(CardType.CREATURE));
diff --git a/Mage.Sets/src/mage/cards/c/CryOfTheCarnarium.java b/Mage.Sets/src/mage/cards/c/CryOfTheCarnarium.java
index 23ac8658fcb..f8a451c4f22 100644
--- a/Mage.Sets/src/mage/cards/c/CryOfTheCarnarium.java
+++ b/Mage.Sets/src/mage/cards/c/CryOfTheCarnarium.java
@@ -119,8 +119,7 @@ class CryOfTheCarnariumReplacementEffect extends ReplacementEffectImpl {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
return zEvent.getTarget() != null
&& zEvent.getTarget().isCreature()
- && zEvent.getFromZone() == Zone.BATTLEFIELD
- && zEvent.getToZone() == Zone.GRAVEYARD;
+ && zEvent.isDiesEvent();
}
}
diff --git a/Mage.Sets/src/mage/cards/c/Cryptoplasm.java b/Mage.Sets/src/mage/cards/c/Cryptoplasm.java
index 2fcf2c30d97..3b159867ea0 100644
--- a/Mage.Sets/src/mage/cards/c/Cryptoplasm.java
+++ b/Mage.Sets/src/mage/cards/c/Cryptoplasm.java
@@ -25,7 +25,7 @@ import mage.util.functions.ApplyToPermanent;
*/
public final class Cryptoplasm extends CardImpl {
- final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/c/CultOfTheWaxingMoon.java b/Mage.Sets/src/mage/cards/c/CultOfTheWaxingMoon.java
index eb94342220b..da9dab039af 100644
--- a/Mage.Sets/src/mage/cards/c/CultOfTheWaxingMoon.java
+++ b/Mage.Sets/src/mage/cards/c/CultOfTheWaxingMoon.java
@@ -47,7 +47,7 @@ public final class CultOfTheWaxingMoon extends CardImpl {
class CultOfTheWaxingMoonAbility extends TriggeredAbilityImpl {
- private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
static {
filter.add(Predicates.not(new SubtypePredicate(SubType.HUMAN)));
diff --git a/Mage.Sets/src/mage/cards/d/DampeningPulse.java b/Mage.Sets/src/mage/cards/d/DampeningPulse.java
index 48d1ab9fa39..54998b8e2ce 100644
--- a/Mage.Sets/src/mage/cards/d/DampeningPulse.java
+++ b/Mage.Sets/src/mage/cards/d/DampeningPulse.java
@@ -19,7 +19,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class DampeningPulse extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/d/DanceOfTheDead.java b/Mage.Sets/src/mage/cards/d/DanceOfTheDead.java
index 40b8b5a6f38..01eccf78337 100644
--- a/Mage.Sets/src/mage/cards/d/DanceOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/d/DanceOfTheDead.java
@@ -204,7 +204,7 @@ class DanceOfTheDeadAttachEffect extends OneShotEffect {
class DanceOfTheDeadChangeAbilityEffect extends ContinuousEffectImpl implements SourceEffect {
- private final static Ability newAbility = new EnchantAbility("creature put onto the battlefield with Dance of the Dead");
+ private static final Ability newAbility = new EnchantAbility("creature put onto the battlefield with Dance of the Dead");
static {
newAbility.setRuleAtTheTop(true);
diff --git a/Mage.Sets/src/mage/cards/d/DaringDemolition.java b/Mage.Sets/src/mage/cards/d/DaringDemolition.java
index 176dedf496c..3bc03353c94 100644
--- a/Mage.Sets/src/mage/cards/d/DaringDemolition.java
+++ b/Mage.Sets/src/mage/cards/d/DaringDemolition.java
@@ -19,7 +19,7 @@ import mage.target.TargetPermanent;
*/
public final class DaringDemolition extends CardImpl {
- private final static FilterPermanent filter = new FilterPermanent("creature or Vehicle");
+ private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
static {
filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), new SubtypePredicate(SubType.VEHICLE)));
diff --git a/Mage.Sets/src/mage/cards/d/DarkSalvation.java b/Mage.Sets/src/mage/cards/d/DarkSalvation.java
index 9c0b24555c4..ca82c4e59ef 100644
--- a/Mage.Sets/src/mage/cards/d/DarkSalvation.java
+++ b/Mage.Sets/src/mage/cards/d/DarkSalvation.java
@@ -58,7 +58,7 @@ public final class DarkSalvation extends CardImpl {
class ZombiesControlledByTargetPlayerCount implements DynamicValue {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombies");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombies");
static {
filter.add(new SubtypePredicate(SubType.ZOMBIE));
diff --git a/Mage.Sets/src/mage/cards/d/DarkslickShores.java b/Mage.Sets/src/mage/cards/d/DarkslickShores.java
index 0dffdd6e4b2..82b941846af 100644
--- a/Mage.Sets/src/mage/cards/d/DarkslickShores.java
+++ b/Mage.Sets/src/mage/cards/d/DarkslickShores.java
@@ -23,7 +23,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*/
public final class DarkslickShores extends CardImpl {
- private final static FilterLandPermanent filter = new FilterLandPermanent();
+ private static final FilterLandPermanent filter = new FilterLandPermanent();
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/d/DauntlessDourbark.java b/Mage.Sets/src/mage/cards/d/DauntlessDourbark.java
index be7b60f0b46..2f82085d8cd 100644
--- a/Mage.Sets/src/mage/cards/d/DauntlessDourbark.java
+++ b/Mage.Sets/src/mage/cards/d/DauntlessDourbark.java
@@ -29,8 +29,8 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*/
public final class DauntlessDourbark extends CardImpl {
- final static private FilterControlledPermanent filter = new FilterControlledPermanent("Forests you control plus the number of Treefolk you control");
- final static private FilterControlledPermanent filter2 = new FilterControlledPermanent();
+ static final private FilterControlledPermanent filter = new FilterControlledPermanent("Forests you control plus the number of Treefolk you control");
+ static final private FilterControlledPermanent filter2 = new FilterControlledPermanent();
static {
filter.add(Predicates.or(new SubtypePredicate(SubType.FOREST),
@@ -39,7 +39,7 @@ public final class DauntlessDourbark extends CardImpl {
filter2.add(AnotherPredicate.instance);
}
- final static private String rule = "{this} has trample as long as you control another Treefolk";
+ static final private String rule = "{this} has trample as long as you control another Treefolk";
public DauntlessDourbark(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/d/DeadeyeHarpooner.java b/Mage.Sets/src/mage/cards/d/DeadeyeHarpooner.java
index a8c31839c7a..f6ef1914b3d 100644
--- a/Mage.Sets/src/mage/cards/d/DeadeyeHarpooner.java
+++ b/Mage.Sets/src/mage/cards/d/DeadeyeHarpooner.java
@@ -24,7 +24,7 @@ import mage.watchers.common.RevoltWatcher;
*/
public final class DeadeyeHarpooner extends CardImpl {
- private final static FilterOpponentsCreaturePermanent filter = new FilterOpponentsCreaturePermanent("tapped creature an opponent controls");
+ private static final FilterOpponentsCreaturePermanent filter = new FilterOpponentsCreaturePermanent("tapped creature an opponent controls");
static {
filter.add(TappedPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/d/DeathlessBehemoth.java b/Mage.Sets/src/mage/cards/d/DeathlessBehemoth.java
index 393d20d1e6c..0cce899f7e8 100644
--- a/Mage.Sets/src/mage/cards/d/DeathlessBehemoth.java
+++ b/Mage.Sets/src/mage/cards/d/DeathlessBehemoth.java
@@ -23,7 +23,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class DeathlessBehemoth extends CardImpl {
- private final static FilterControlledPermanent filter = new FilterControlledPermanent("two Eldrazi Scions");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("two Eldrazi Scions");
static {
filter.add(Predicates.and(
diff --git a/Mage.Sets/src/mage/cards/d/DecayingSoil.java b/Mage.Sets/src/mage/cards/d/DecayingSoil.java
index 8c709b42aa5..0f6f005166e 100644
--- a/Mage.Sets/src/mage/cards/d/DecayingSoil.java
+++ b/Mage.Sets/src/mage/cards/d/DecayingSoil.java
@@ -99,7 +99,7 @@ class DecayingSoilTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
if (permanent != null && filter.match(permanent, this.getSourceId(), this.getControllerId(), game)) {
getEffects().get(0).setTargetPointer(new FixedTarget(permanent.getId()));
diff --git a/Mage.Sets/src/mage/cards/d/DefiantSalvager.java b/Mage.Sets/src/mage/cards/d/DefiantSalvager.java
index 8a6a3fc5924..7abc7ce3347 100644
--- a/Mage.Sets/src/mage/cards/d/DefiantSalvager.java
+++ b/Mage.Sets/src/mage/cards/d/DefiantSalvager.java
@@ -24,7 +24,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class DefiantSalvager extends CardImpl {
- private final static FilterControlledPermanent filter = new FilterControlledPermanent("an artifact or creature");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact or creature");
static {
filter.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT), new CardTypePredicate(CardType.CREATURE)));
diff --git a/Mage.Sets/src/mage/cards/d/DemonsHorn.java b/Mage.Sets/src/mage/cards/d/DemonsHorn.java
index bc8400022df..71e71e2d01b 100644
--- a/Mage.Sets/src/mage/cards/d/DemonsHorn.java
+++ b/Mage.Sets/src/mage/cards/d/DemonsHorn.java
@@ -19,7 +19,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public final class DemonsHorn extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("a black spell");
+ private static final FilterSpell filter = new FilterSpell("a black spell");
static {
filter.add(new ColorPredicate(ObjectColor.BLACK));
diff --git a/Mage.Sets/src/mage/cards/d/DespoticScepter.java b/Mage.Sets/src/mage/cards/d/DespoticScepter.java
index b08f92a42a2..d4757705ebc 100644
--- a/Mage.Sets/src/mage/cards/d/DespoticScepter.java
+++ b/Mage.Sets/src/mage/cards/d/DespoticScepter.java
@@ -21,7 +21,7 @@ import mage.target.TargetPermanent;
*/
public final class DespoticScepter extends CardImpl {
- private final static FilterPermanent FILTER = new FilterPermanent("permanent you own");
+ private static final FilterPermanent FILTER = new FilterPermanent("permanent you own");
static {
FILTER.add(new OwnerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/d/DinOfTheFireherd.java b/Mage.Sets/src/mage/cards/d/DinOfTheFireherd.java
index f4d6055b6ad..a8bc994b4f6 100644
--- a/Mage.Sets/src/mage/cards/d/DinOfTheFireherd.java
+++ b/Mage.Sets/src/mage/cards/d/DinOfTheFireherd.java
@@ -48,8 +48,8 @@ public final class DinOfTheFireherd extends CardImpl {
class DinOfTheFireherdEffect extends OneShotEffect {
- private final static FilterControlledCreaturePermanent blackCreatureFilter = new FilterControlledCreaturePermanent("black creatures you control");
- private final static FilterControlledCreaturePermanent redCreatureFilter = new FilterControlledCreaturePermanent("red creatures you control");
+ private static final FilterControlledCreaturePermanent blackCreatureFilter = new FilterControlledCreaturePermanent("black creatures you control");
+ private static final FilterControlledCreaturePermanent redCreatureFilter = new FilterControlledCreaturePermanent("red creatures you control");
static {
blackCreatureFilter.add(new ColorPredicate(ObjectColor.BLACK));
diff --git a/Mage.Sets/src/mage/cards/d/DingusEgg.java b/Mage.Sets/src/mage/cards/d/DingusEgg.java
index 80e94000fb0..cb2bed2f3be 100644
--- a/Mage.Sets/src/mage/cards/d/DingusEgg.java
+++ b/Mage.Sets/src/mage/cards/d/DingusEgg.java
@@ -56,8 +56,7 @@ class DingusEggTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD
- && zEvent.getToZone() == Zone.GRAVEYARD
+ if (zEvent.isDiesEvent()
&& zEvent.getTarget().isLand()) {
if (getTargets().isEmpty()) {
UUID targetId = zEvent.getTarget().getControllerId();
diff --git a/Mage.Sets/src/mage/cards/d/DiplomaticEscort.java b/Mage.Sets/src/mage/cards/d/DiplomaticEscort.java
index 6e5555fdf8f..4132ba251b7 100644
--- a/Mage.Sets/src/mage/cards/d/DiplomaticEscort.java
+++ b/Mage.Sets/src/mage/cards/d/DiplomaticEscort.java
@@ -25,7 +25,7 @@ import mage.target.TargetStackObject;
*/
public final class DiplomaticEscort extends CardImpl {
- private final static FilterStackObject filter = new FilterStackObject("spell or ability that targets a creature");
+ private static final FilterStackObject filter = new FilterStackObject("spell or ability that targets a creature");
static {
filter.add(new TargetsPermanentPredicate(new FilterCreaturePermanent()));
diff --git a/Mage.Sets/src/mage/cards/d/DireUndercurrents.java b/Mage.Sets/src/mage/cards/d/DireUndercurrents.java
index 9c104360e81..ce28bb0433c 100644
--- a/Mage.Sets/src/mage/cards/d/DireUndercurrents.java
+++ b/Mage.Sets/src/mage/cards/d/DireUndercurrents.java
@@ -22,11 +22,11 @@ import mage.target.TargetPlayer;
*/
public final class DireUndercurrents extends CardImpl {
- private final static String rule1 = "Whenever a blue creature enters the battlefield under your control, you may have target player draw a card.";
- private final static String rule2 = "Whenever a black creature enters the battlefield under your control, you may have target player discard a card.";
+ private static final String rule1 = "Whenever a blue creature enters the battlefield under your control, you may have target player draw a card.";
+ private static final String rule2 = "Whenever a black creature enters the battlefield under your control, you may have target player discard a card.";
- private final static FilterControlledPermanent filterBlue = new FilterControlledCreaturePermanent();
- private final static FilterControlledPermanent filterBlack = new FilterControlledCreaturePermanent();
+ private static final FilterControlledPermanent filterBlue = new FilterControlledCreaturePermanent();
+ private static final FilterControlledPermanent filterBlack = new FilterControlledCreaturePermanent();
static {
filterBlue.add(new ColorPredicate(ObjectColor.BLUE));
diff --git a/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java b/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java
index 4d77c40513b..7417c633a44 100644
--- a/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java
+++ b/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java
@@ -86,7 +86,7 @@ class DiregrafCaptainTriggeredAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (!event.getTargetId().equals(this.getSourceId())) {
ZoneChangeEvent zEvent = (ZoneChangeEvent)event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
Permanent p = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
if (p != null && p.isControlledBy(this.controllerId) && filter.match(p, game)) {
return true;
diff --git a/Mage.Sets/src/mage/cards/d/DissensionInTheRanks.java b/Mage.Sets/src/mage/cards/d/DissensionInTheRanks.java
index 13d14c9460d..5719cf8b5b3 100644
--- a/Mage.Sets/src/mage/cards/d/DissensionInTheRanks.java
+++ b/Mage.Sets/src/mage/cards/d/DissensionInTheRanks.java
@@ -17,7 +17,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class DissensionInTheRanks extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("blocking creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blocking creature");
static {
filter.add(BlockingPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/d/DjinnIlluminatus.java b/Mage.Sets/src/mage/cards/d/DjinnIlluminatus.java
index bba34f74968..c613b4238da 100644
--- a/Mage.Sets/src/mage/cards/d/DjinnIlluminatus.java
+++ b/Mage.Sets/src/mage/cards/d/DjinnIlluminatus.java
@@ -52,7 +52,7 @@ public final class DjinnIlluminatus extends CardImpl {
class DjinnIlluminatusGainReplicateEffect extends ContinuousEffectImpl {
- private final static FilterInstantOrSorcerySpell filter = new FilterInstantOrSorcerySpell();
+ private static final FilterInstantOrSorcerySpell filter = new FilterInstantOrSorcerySpell();
private final Map replicateAbilities = new HashMap<>();
public DjinnIlluminatusGainReplicateEffect() {
diff --git a/Mage.Sets/src/mage/cards/d/Domineer.java b/Mage.Sets/src/mage/cards/d/Domineer.java
index f24c075f693..95afadeb8df 100644
--- a/Mage.Sets/src/mage/cards/d/Domineer.java
+++ b/Mage.Sets/src/mage/cards/d/Domineer.java
@@ -24,7 +24,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class Domineer extends CardImpl {
- final static FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
+ static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
static {
filter.add(new CardTypePredicate(CardType.ARTIFACT));
diff --git a/Mage.Sets/src/mage/cards/d/DoubtlessOne.java b/Mage.Sets/src/mage/cards/d/DoubtlessOne.java
index 03a655b1481..b29eff1bd4d 100644
--- a/Mage.Sets/src/mage/cards/d/DoubtlessOne.java
+++ b/Mage.Sets/src/mage/cards/d/DoubtlessOne.java
@@ -22,7 +22,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public final class DoubtlessOne extends CardImpl {
- final static FilterPermanent filter = new FilterPermanent("Clerics on the battlefield");
+ static final FilterPermanent filter = new FilterPermanent("Clerics on the battlefield");
static {
filter.add(new SubtypePredicate(SubType.CLERIC));
diff --git a/Mage.Sets/src/mage/cards/d/DragonlordsPrerogative.java b/Mage.Sets/src/mage/cards/d/DragonlordsPrerogative.java
index f90f8c05ee4..68af370d1a5 100644
--- a/Mage.Sets/src/mage/cards/d/DragonlordsPrerogative.java
+++ b/Mage.Sets/src/mage/cards/d/DragonlordsPrerogative.java
@@ -83,7 +83,7 @@ enum DragonlordsPrerogativeAdjuster implements CostAdjuster {
class DragonlordsPrerogativeCondition implements Condition {
- private final static FilterControlledPermanent filter = new FilterControlledPermanent("Dragon");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("Dragon");
static {
filter.add(new SubtypePredicate(SubType.DRAGON));
diff --git a/Mage.Sets/src/mage/cards/d/DragonsClaw.java b/Mage.Sets/src/mage/cards/d/DragonsClaw.java
index eafaca5ef5e..647d66407c6 100644
--- a/Mage.Sets/src/mage/cards/d/DragonsClaw.java
+++ b/Mage.Sets/src/mage/cards/d/DragonsClaw.java
@@ -17,7 +17,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public final class DragonsClaw extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("a red spell");
+ private static final FilterSpell filter = new FilterSpell("a red spell");
static {
filter.add(new ColorPredicate(ObjectColor.RED));
diff --git a/Mage.Sets/src/mage/cards/d/DragonsEyeSavants.java b/Mage.Sets/src/mage/cards/d/DragonsEyeSavants.java
index 528687ae190..a4fd2922cc7 100644
--- a/Mage.Sets/src/mage/cards/d/DragonsEyeSavants.java
+++ b/Mage.Sets/src/mage/cards/d/DragonsEyeSavants.java
@@ -25,7 +25,7 @@ import mage.target.common.TargetOpponent;
*/
public final class DragonsEyeSavants extends CardImpl {
- private final static FilterCard filter = new FilterCard("a blue card in your hand");
+ private static final FilterCard filter = new FilterCard("a blue card in your hand");
static {
filter.add(new ColorPredicate(ObjectColor.BLUE));
}
diff --git a/Mage.Sets/src/mage/cards/d/DramaticReversal.java b/Mage.Sets/src/mage/cards/d/DramaticReversal.java
index 4d705f42b7f..a8d990a82da 100644
--- a/Mage.Sets/src/mage/cards/d/DramaticReversal.java
+++ b/Mage.Sets/src/mage/cards/d/DramaticReversal.java
@@ -16,7 +16,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class DramaticReversal extends CardImpl {
- private final static FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanents");
+ private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("nonland permanents");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/d/DuneBroodNephilim.java b/Mage.Sets/src/mage/cards/d/DuneBroodNephilim.java
index b4f6e3f9cf1..2ea06d32390 100644
--- a/Mage.Sets/src/mage/cards/d/DuneBroodNephilim.java
+++ b/Mage.Sets/src/mage/cards/d/DuneBroodNephilim.java
@@ -19,7 +19,7 @@ import mage.game.permanent.token.DuneBroodNephilimToken;
*/
public final class DuneBroodNephilim extends CardImpl {
- final static FilterControlledPermanent filterLands = new FilterControlledLandPermanent();
+ static final FilterControlledPermanent filterLands = new FilterControlledLandPermanent();
public DuneBroodNephilim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{R}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/d/DungroveElder.java b/Mage.Sets/src/mage/cards/d/DungroveElder.java
index f12ba5add7c..6a3d12ea275 100644
--- a/Mage.Sets/src/mage/cards/d/DungroveElder.java
+++ b/Mage.Sets/src/mage/cards/d/DungroveElder.java
@@ -23,7 +23,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public final class DungroveElder extends CardImpl {
- final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
+ static final FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
static {
filterLands.add(new SubtypePredicate(SubType.FOREST));
diff --git a/Mage.Sets/src/mage/cards/d/DustStalker.java b/Mage.Sets/src/mage/cards/d/DustStalker.java
index 4a156722407..8f2c44d4dd8 100644
--- a/Mage.Sets/src/mage/cards/d/DustStalker.java
+++ b/Mage.Sets/src/mage/cards/d/DustStalker.java
@@ -25,7 +25,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*/
public final class DustStalker extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("if you control no other colorless creatures");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("if you control no other colorless creatures");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java b/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java
index 37c2081f546..d213ba19deb 100644
--- a/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java
+++ b/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java
@@ -28,7 +28,7 @@ import mage.util.SubTypeList;
*/
public final class EarlOfSquirrel extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Creature tokens you control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creature tokens you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Other squirrels you control");
diff --git a/Mage.Sets/src/mage/cards/e/EddytrailHawk.java b/Mage.Sets/src/mage/cards/e/EddytrailHawk.java
index e7bf591e8c8..6428e555f0f 100644
--- a/Mage.Sets/src/mage/cards/e/EddytrailHawk.java
+++ b/Mage.Sets/src/mage/cards/e/EddytrailHawk.java
@@ -26,7 +26,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class EddytrailHawk extends CardImpl {
- private final static FilterAttackingCreature filter = new FilterAttackingCreature();
+ private static final FilterAttackingCreature filter = new FilterAttackingCreature();
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/e/ElectrostaticBolt.java b/Mage.Sets/src/mage/cards/e/ElectrostaticBolt.java
index af8469673f0..b0f405a1cd9 100644
--- a/Mage.Sets/src/mage/cards/e/ElectrostaticBolt.java
+++ b/Mage.Sets/src/mage/cards/e/ElectrostaticBolt.java
@@ -43,7 +43,7 @@ public final class ElectrostaticBolt extends CardImpl {
class ElectrostaticBoltDamageValue implements DynamicValue {
- final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(new CardTypePredicate(CardType.ARTIFACT));
diff --git a/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java b/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java
index 0dee090c343..117f6d63810 100644
--- a/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java
+++ b/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java
@@ -58,7 +58,7 @@ public final class ElvishBranchbender extends CardImpl {
class ElvishBranchbenderEffect extends OneShotEffect {
- final static FilterControlledPermanent filter = new FilterControlledPermanent("Elves you control");
+ static final FilterControlledPermanent filter = new FilterControlledPermanent("Elves you control");
static {
filter.add(new SubtypePredicate(SubType.ELF));
}
diff --git a/Mage.Sets/src/mage/cards/e/EnergyStorm.java b/Mage.Sets/src/mage/cards/e/EnergyStorm.java
index e56b8fd6b0a..a3a8cc4593a 100644
--- a/Mage.Sets/src/mage/cards/e/EnergyStorm.java
+++ b/Mage.Sets/src/mage/cards/e/EnergyStorm.java
@@ -24,7 +24,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*/
public final class EnergyStorm extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with flying");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with flying");
static {
filter.add(new AbilityPredicate(FlyingAbility.class));
diff --git a/Mage.Sets/src/mage/cards/e/ErebossTitan.java b/Mage.Sets/src/mage/cards/e/ErebossTitan.java
index c155d1cf61e..d15a436bb83 100644
--- a/Mage.Sets/src/mage/cards/e/ErebossTitan.java
+++ b/Mage.Sets/src/mage/cards/e/ErebossTitan.java
@@ -34,7 +34,7 @@ import mage.players.Player;
*/
public final class ErebossTitan extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/e/EtaliPrimalStorm.java b/Mage.Sets/src/mage/cards/e/EtaliPrimalStorm.java
index de1af82213d..5c5ff2373d8 100644
--- a/Mage.Sets/src/mage/cards/e/EtaliPrimalStorm.java
+++ b/Mage.Sets/src/mage/cards/e/EtaliPrimalStorm.java
@@ -58,7 +58,7 @@ public final class EtaliPrimalStorm extends CardImpl {
class EtaliPrimalStormEffect extends OneShotEffect {
- private final static FilterCard filter = new FilterCard("nonland cards");
+ private static final FilterCard filter = new FilterCard("nonland cards");
static {
filter.add(Predicates.not(new CardTypePredicate(CardType.LAND)));
diff --git a/Mage.Sets/src/mage/cards/e/ExtractorDemon.java b/Mage.Sets/src/mage/cards/e/ExtractorDemon.java
index 0576b6b22e5..5ae17fa5acc 100644
--- a/Mage.Sets/src/mage/cards/e/ExtractorDemon.java
+++ b/Mage.Sets/src/mage/cards/e/ExtractorDemon.java
@@ -24,7 +24,7 @@ import mage.target.TargetPlayer;
*/
public final class ExtractorDemon extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/e/EzurisBrigade.java b/Mage.Sets/src/mage/cards/e/EzurisBrigade.java
index 1602de0fe62..28bd5cf3748 100644
--- a/Mage.Sets/src/mage/cards/e/EzurisBrigade.java
+++ b/Mage.Sets/src/mage/cards/e/EzurisBrigade.java
@@ -24,7 +24,7 @@ import mage.constants.Zone;
* @author Loki
*/
public final class EzurisBrigade extends CardImpl {
- private static final String text = "Metalcraft — As long as you control three or more artifacts, Ezuri's Brigade gets +4/+4 and has trample";
+ private static final String rule = "Metalcraft — As long as you control three or more artifacts, Ezuri's Brigade gets +4/+4 and has trample";
public EzurisBrigade (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
@@ -34,7 +34,7 @@ public final class EzurisBrigade extends CardImpl {
this.power = new MageInt(4);
this.toughness = new MageInt(4);
ContinuousEffect boostSource = new BoostSourceEffect(4, 4, Duration.WhileOnBattlefield);
- ConditionalContinuousEffect effect = new ConditionalContinuousEffect(boostSource, MetalcraftCondition.instance, text);
+ ConditionalContinuousEffect effect = new ConditionalContinuousEffect(boostSource, MetalcraftCondition.instance, rule);
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield), MetalcraftCondition.instance, ""));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/f/FairgroundsWarden.java b/Mage.Sets/src/mage/cards/f/FairgroundsWarden.java
index ad31ca0c71f..03ab1b1fd99 100644
--- a/Mage.Sets/src/mage/cards/f/FairgroundsWarden.java
+++ b/Mage.Sets/src/mage/cards/f/FairgroundsWarden.java
@@ -28,7 +28,7 @@ import mage.util.CardUtil;
*/
public final class FairgroundsWarden extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/f/FalkenrathNoble.java b/Mage.Sets/src/mage/cards/f/FalkenrathNoble.java
index d68b94cc4df..3491dc52628 100644
--- a/Mage.Sets/src/mage/cards/f/FalkenrathNoble.java
+++ b/Mage.Sets/src/mage/cards/f/FalkenrathNoble.java
@@ -72,7 +72,7 @@ class FalkenrathNobleTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
if (permanent != null) {
if (permanent.getId().equals(this.getSourceId())) {
diff --git a/Mage.Sets/src/mage/cards/f/ForerunnerOfSlaughter.java b/Mage.Sets/src/mage/cards/f/ForerunnerOfSlaughter.java
index 75685ca33fc..558a0caccb8 100644
--- a/Mage.Sets/src/mage/cards/f/ForerunnerOfSlaughter.java
+++ b/Mage.Sets/src/mage/cards/f/ForerunnerOfSlaughter.java
@@ -25,7 +25,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class ForerunnerOfSlaughter extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("colorless creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("colorless creature");
static {
filter.add(ColorlessPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/f/ForiysianTotem.java b/Mage.Sets/src/mage/cards/f/ForiysianTotem.java
index ce7ea5dacc7..ee0c0033744 100644
--- a/Mage.Sets/src/mage/cards/f/ForiysianTotem.java
+++ b/Mage.Sets/src/mage/cards/f/ForiysianTotem.java
@@ -28,7 +28,7 @@ import mage.game.permanent.token.Token;
*/
public final class ForiysianTotem extends CardImpl {
- private final static String ruleText = "As long as {this} is a creature, it can block an additional creature each combat.";
+ private static final String ruleText = "As long as {this} is a creature, it can block an additional creature each combat.";
public ForiysianTotem(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
diff --git a/Mage.Sets/src/mage/cards/f/FoundryHornet.java b/Mage.Sets/src/mage/cards/f/FoundryHornet.java
index dc9eb22f34f..86571157dc4 100644
--- a/Mage.Sets/src/mage/cards/f/FoundryHornet.java
+++ b/Mage.Sets/src/mage/cards/f/FoundryHornet.java
@@ -28,7 +28,7 @@ import mage.filter.predicate.permanent.CounterPredicate;
public final class FoundryHornet extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a creature with a +1/+1 counter on it");
- private final static FilterCreaturePermanent filterOpponent = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filterOpponent = new FilterCreaturePermanent();
static {
filter.add(new CounterPredicate(CounterType.P1P1));
diff --git a/Mage.Sets/src/mage/cards/f/FreyaliseSupplicant.java b/Mage.Sets/src/mage/cards/f/FreyaliseSupplicant.java
index 92a0ce7e204..3a0d18ab5c2 100644
--- a/Mage.Sets/src/mage/cards/f/FreyaliseSupplicant.java
+++ b/Mage.Sets/src/mage/cards/f/FreyaliseSupplicant.java
@@ -27,7 +27,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class FreyaliseSupplicant extends CardImpl {
- private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("red or white creature");
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("red or white creature");
static {
filter.add(Predicates.or(new ColorPredicate(ObjectColor.RED),
diff --git a/Mage.Sets/src/mage/cards/f/FrontierSiege.java b/Mage.Sets/src/mage/cards/f/FrontierSiege.java
index 6674c0568f0..00af641bf3b 100644
--- a/Mage.Sets/src/mage/cards/f/FrontierSiege.java
+++ b/Mage.Sets/src/mage/cards/f/FrontierSiege.java
@@ -39,8 +39,8 @@ public final class FrontierSiege extends CardImpl {
filter.add(new AbilityPredicate(FlyingAbility.class));
filter2.add(new ControllerPredicate(TargetController.NOT_YOU));
}
- private final static String ruleTrigger1 = "&bull Khans — At the beginning of each of your main phases, add {G}{G}.";
- private final static String ruleTrigger2 = "&bull Dragons — Whenever a creature with flying enters the battlefield under your control, you may have it fight target creature you don't control.";
+ private static final String ruleTrigger1 = "&bull Khans — At the beginning of each of your main phases, add {G}{G}.";
+ private static final String ruleTrigger2 = "&bull Dragons — Whenever a creature with flying enters the battlefield under your control, you may have it fight target creature you don't control.";
public FrontierSiege(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}");
diff --git a/Mage.Sets/src/mage/cards/g/GOTOJAIL.java b/Mage.Sets/src/mage/cards/g/GOTOJAIL.java
index f7eea87ac1b..acfb52eb170 100644
--- a/Mage.Sets/src/mage/cards/g/GOTOJAIL.java
+++ b/Mage.Sets/src/mage/cards/g/GOTOJAIL.java
@@ -33,7 +33,7 @@ import mage.util.CardUtil;
*/
public final class GOTOJAIL extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/g/GaeasLiege.java b/Mage.Sets/src/mage/cards/g/GaeasLiege.java
index 0b4a5d87def..99c8c30d33f 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasLiege.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasLiege.java
@@ -34,7 +34,7 @@ import mage.target.common.TargetLandPermanent;
*/
public final class GaeasLiege extends CardImpl {
- final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
+ static final FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
static {
filterLands.add(new SubtypePredicate(SubType.FOREST));
diff --git a/Mage.Sets/src/mage/cards/g/GangrenousZombies.java b/Mage.Sets/src/mage/cards/g/GangrenousZombies.java
index 4fd7847eb5b..17fca38a81c 100644
--- a/Mage.Sets/src/mage/cards/g/GangrenousZombies.java
+++ b/Mage.Sets/src/mage/cards/g/GangrenousZombies.java
@@ -27,7 +27,7 @@ import java.util.UUID;
*/
public final class GangrenousZombies extends CardImpl {
- private final static FilterLandPermanent filter = new FilterLandPermanent();
+ private static final FilterLandPermanent filter = new FilterLandPermanent();
static {
filter.add(new SupertypePredicate(SuperType.SNOW));
diff --git a/Mage.Sets/src/mage/cards/g/GeneralTazri.java b/Mage.Sets/src/mage/cards/g/GeneralTazri.java
index c66d44f2502..013d1bd9199 100644
--- a/Mage.Sets/src/mage/cards/g/GeneralTazri.java
+++ b/Mage.Sets/src/mage/cards/g/GeneralTazri.java
@@ -68,7 +68,7 @@ public final class GeneralTazri extends CardImpl {
class GeneralTazriColorCount implements DynamicValue {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(new SubtypePredicate((SubType.ALLY)));
diff --git a/Mage.Sets/src/mage/cards/g/GhalmasWarden.java b/Mage.Sets/src/mage/cards/g/GhalmasWarden.java
index 22f8bb494b8..a371efbecb3 100644
--- a/Mage.Sets/src/mage/cards/g/GhalmasWarden.java
+++ b/Mage.Sets/src/mage/cards/g/GhalmasWarden.java
@@ -22,7 +22,7 @@ import mage.constants.Zone;
*/
public final class GhalmasWarden extends CardImpl {
- private static final String text = "Metalcraft — Ghalma's Warden gets +2/+2 as long as you control three or more artifacts";
+ private static final String rule = "Metalcraft — Ghalma's Warden gets +2/+2 as long as you control three or more artifacts";
public GhalmasWarden (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
@@ -32,7 +32,7 @@ public final class GhalmasWarden extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(4);
ContinuousEffect boostSource = new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield);
- ConditionalContinuousEffect effect = new ConditionalContinuousEffect(boostSource, MetalcraftCondition.instance, text);
+ ConditionalContinuousEffect effect = new ConditionalContinuousEffect(boostSource, MetalcraftCondition.instance, rule);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
}
diff --git a/Mage.Sets/src/mage/cards/g/GideonBattleForged.java b/Mage.Sets/src/mage/cards/g/GideonBattleForged.java
index 79b48010596..f54e3445b75 100644
--- a/Mage.Sets/src/mage/cards/g/GideonBattleForged.java
+++ b/Mage.Sets/src/mage/cards/g/GideonBattleForged.java
@@ -35,7 +35,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class GideonBattleForged extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/g/GideonsResolve.java b/Mage.Sets/src/mage/cards/g/GideonsResolve.java
index c5826bf3351..561bac51b20 100644
--- a/Mage.Sets/src/mage/cards/g/GideonsResolve.java
+++ b/Mage.Sets/src/mage/cards/g/GideonsResolve.java
@@ -20,7 +20,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*/
public final class GideonsResolve extends CardImpl {
- private final static FilterCard filter = new FilterCard("Gideon, Martial Paragon");
+ private static final FilterCard filter = new FilterCard("Gideon, Martial Paragon");
static {
filter.add(new NamePredicate("Gideon, Martial Paragon"));
diff --git a/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java b/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java
index 07e4251a6a4..3395c5e64b7 100644
--- a/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java
+++ b/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java
@@ -25,7 +25,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class GiltLeafWinnower extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Elf creature whose power and toughness aren't equal");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Elf creature whose power and toughness aren't equal");
static {
filter.add(Predicates.not(new SubtypePredicate(SubType.ELF)));
diff --git a/Mage.Sets/src/mage/cards/g/GlimmerpointStag.java b/Mage.Sets/src/mage/cards/g/GlimmerpointStag.java
index 4258c96d373..939b63db59c 100644
--- a/Mage.Sets/src/mage/cards/g/GlimmerpointStag.java
+++ b/Mage.Sets/src/mage/cards/g/GlimmerpointStag.java
@@ -30,7 +30,7 @@ import mage.target.targetpointer.FixedTarget;
*/
public final class GlimmerpointStag extends CardImpl {
- private final static FilterPermanent filter = new FilterPermanent("another target permanent");
+ private static final FilterPermanent filter = new FilterPermanent("another target permanent");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/g/GnarlrootTrapper.java b/Mage.Sets/src/mage/cards/g/GnarlrootTrapper.java
index a58d85839da..be62dc9f0f5 100644
--- a/Mage.Sets/src/mage/cards/g/GnarlrootTrapper.java
+++ b/Mage.Sets/src/mage/cards/g/GnarlrootTrapper.java
@@ -35,7 +35,7 @@ import java.util.UUID;
*/
public final class GnarlrootTrapper extends CardImpl {
- private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("attacking ELf you control");
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("attacking ELf you control");
static {
filter.add(AttackingPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/g/GoblinChainwhirler.java b/Mage.Sets/src/mage/cards/g/GoblinChainwhirler.java
index b199353a7e0..9444c594518 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinChainwhirler.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinChainwhirler.java
@@ -24,7 +24,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class GoblinChainwhirler extends CardImpl {
- final static FilterPermanent filter = new FilterPermanent("creatures and planeswalkers your opponents control");
+ static final FilterPermanent filter = new FilterPermanent("creatures and planeswalkers your opponents control");
static {
filter.add(Predicates.or(
diff --git a/Mage.Sets/src/mage/cards/g/GoblinFlotilla.java b/Mage.Sets/src/mage/cards/g/GoblinFlotilla.java
index caaa53ed511..2abda792419 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinFlotilla.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinFlotilla.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import java.util.UUID;
@@ -6,6 +5,7 @@ import mage.MageInt;
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
import mage.abilities.common.BlocksOrBecomesBlockedTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DoUnlessControllerPaysEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
@@ -27,22 +27,32 @@ public final class GoblinFlotilla extends CardImpl {
public GoblinFlotilla(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
this.subtype.add(SubType.GOBLIN);
-
+
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// Islandwalk
this.addAbility(new IslandwalkAbility());
+
// At the beginning of each combat, unless you pay {R}, whenever Goblin Flotilla blocks or becomes blocked by a creature this combat, that creature gains first strike until end of turn.
+ Effect effect = new DoUnlessControllerPaysEffect(
+ new GainAbilitySourceEffect(
+ new BlocksOrBecomesBlockedTriggeredAbility(
+ new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(),
+ Duration.EndOfTurn,
+ "Blocks or Blocked by Goblin Flotilla"),
+ false),
+ Duration.EndOfCombat),
+ new ManaCostsImpl("{R}"),
+ "Pay Goblin Flotilla combat effect?"
+ );
+ effect.setText("unless you pay {R}, whenever {this} blocks or becomes blocked by a creature this combat, that creature gains first strike until end of turn.");
this.addAbility(new BeginningOfCombatTriggeredAbility(
- new DoUnlessControllerPaysEffect(
- new GainAbilitySourceEffect(new BlocksOrBecomesBlockedTriggeredAbility(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn, "Blocks or Blocked by Goblin Flotilla"), false), Duration.EndOfCombat),
- new ManaCostsImpl("{R}"),
- "Pay Goblin Flotilla combat effect?"
- ),
+ effect,
TargetController.ANY,
false
));
+
}
public GoblinFlotilla(final GoblinFlotilla card) {
diff --git a/Mage.Sets/src/mage/cards/g/GoblinTrenches.java b/Mage.Sets/src/mage/cards/g/GoblinTrenches.java
index 5b3e4dc9449..1fa892e6106 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinTrenches.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinTrenches.java
@@ -22,7 +22,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class GoblinTrenches extends CardImpl {
- final static FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
+ static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
public GoblinTrenches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{W}");
diff --git a/Mage.Sets/src/mage/cards/g/Gomazoa.java b/Mage.Sets/src/mage/cards/g/Gomazoa.java
index c6b38885841..b3163a4fda5 100644
--- a/Mage.Sets/src/mage/cards/g/Gomazoa.java
+++ b/Mage.Sets/src/mage/cards/g/Gomazoa.java
@@ -87,9 +87,8 @@ class GomazoaEffect extends OneShotEffect {
}
BlockedByWatcher watcher = game.getState().getWatcher(BlockedByWatcher.class, source.getSourceId());
- creaturesBlocked = watcher.blockedByWatcher;
- for (UUID blockedById : creaturesBlocked) {
+ for (UUID blockedById : watcher.getBlockedByWatcher()) {
Permanent blockedByGomazoa = game.getPermanent(blockedById);
if (blockedByGomazoa != null && blockedByGomazoa.isAttacking()) {
players.add(blockedByGomazoa.getOwnerId());
@@ -114,13 +113,17 @@ class GomazoaEffect extends OneShotEffect {
class BlockedByWatcher extends Watcher {
- public List blockedByWatcher = new ArrayList<>();
+ public List getBlockedByWatcher() {
+ return blockedByWatcher;
+ }
+
+ private List blockedByWatcher = new ArrayList<>();
public BlockedByWatcher() {
super(BlockedByWatcher.class.getSimpleName(), WatcherScope.CARD);
}
- public BlockedByWatcher(final BlockedByWatcher watcher) {
+ private BlockedByWatcher(final BlockedByWatcher watcher) {
super(watcher);
this.blockedByWatcher.addAll(watcher.blockedByWatcher);
}
diff --git a/Mage.Sets/src/mage/cards/g/GracefulReprieve.java b/Mage.Sets/src/mage/cards/g/GracefulReprieve.java
index 8e891fc4dac..99abc60e6bd 100644
--- a/Mage.Sets/src/mage/cards/g/GracefulReprieve.java
+++ b/Mage.Sets/src/mage/cards/g/GracefulReprieve.java
@@ -93,7 +93,7 @@ class GracefulReprieveDelayedTriggeredAbility extends DelayedTriggeredAbility {
public boolean checkTrigger(GameEvent event, Game game) {
if (target.refersTo(((ZoneChangeEvent) event).getTarget(), game)) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
getEffects().setTargetPointer(new FixedTarget(target.getSourceId()));
return true;
}
diff --git a/Mage.Sets/src/mage/cards/g/GraspingCurrent.java b/Mage.Sets/src/mage/cards/g/GraspingCurrent.java
index 7d37e336b05..bc0c1719754 100644
--- a/Mage.Sets/src/mage/cards/g/GraspingCurrent.java
+++ b/Mage.Sets/src/mage/cards/g/GraspingCurrent.java
@@ -17,7 +17,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class GraspingCurrent extends CardImpl {
- private final static FilterCard filter = new FilterCard("Jace, Ingenious Mind-Mage");
+ private static final FilterCard filter = new FilterCard("Jace, Ingenious Mind-Mage");
static {
filter.add(new NamePredicate("Jace, Ingenious Mind-Mage"));
diff --git a/Mage.Sets/src/mage/cards/g/GravityNegator.java b/Mage.Sets/src/mage/cards/g/GravityNegator.java
index 17673de97b7..e96d7f465a8 100644
--- a/Mage.Sets/src/mage/cards/g/GravityNegator.java
+++ b/Mage.Sets/src/mage/cards/g/GravityNegator.java
@@ -25,7 +25,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class GravityNegator extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/g/GravitySphere.java b/Mage.Sets/src/mage/cards/g/GravitySphere.java
index 97871089dcc..e0fa620fd15 100644
--- a/Mage.Sets/src/mage/cards/g/GravitySphere.java
+++ b/Mage.Sets/src/mage/cards/g/GravitySphere.java
@@ -21,7 +21,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*/
public final class GravitySphere extends CardImpl {
- final static private FilterPermanent filter = new FilterPermanent("All creatures");
+ static final private FilterPermanent filter = new FilterPermanent("All creatures");
static {
filter.add(new CardTypePredicate(CardType.CREATURE));
diff --git a/Mage.Sets/src/mage/cards/g/GrothamaAllDevouring.java b/Mage.Sets/src/mage/cards/g/GrothamaAllDevouring.java
index d5013b28788..77832fe2e06 100644
--- a/Mage.Sets/src/mage/cards/g/GrothamaAllDevouring.java
+++ b/Mage.Sets/src/mage/cards/g/GrothamaAllDevouring.java
@@ -49,7 +49,7 @@ public final class GrothamaAllDevouring extends CardImpl {
this.addAbility(new LeavesBattlefieldTriggeredAbility(new GrothamaAllDevouringDrawCardsEffect(), false), new GrothamaAllDevouringWatcher());
}
- public GrothamaAllDevouring(final GrothamaAllDevouring card) {
+ private GrothamaAllDevouring(final GrothamaAllDevouring card) {
super(card);
}
@@ -61,16 +61,16 @@ public final class GrothamaAllDevouring extends CardImpl {
class GrothamaAllDevouringGainAbilityEffect extends GainAbilityAllEffect {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures");
+ private static final FilterCreaturePermanent otherCreatureFilter = new FilterCreaturePermanent("other creatures");
static {
- filter.add(AnotherPredicate.instance);
+ otherCreatureFilter.add(AnotherPredicate.instance);
}
GrothamaAllDevouringGainAbilityEffect() {
super(new AttacksTriggeredAbility(
new GrothamaAllDevouringFightEffect(null, null), true
- ), Duration.WhileOnBattlefield, filter);
+ ), Duration.WhileOnBattlefield, otherCreatureFilter);
this.staticText = "Other creatures have \"Whenever this creature attacks, you may have it fight {this}.\"";
}
@@ -168,7 +168,7 @@ class GrothamaAllDevouringDrawCardsEffect extends OneShotEffect {
class GrothamaAllDevouringWatcher extends Watcher {
- Map> damageMap = new HashMap<>();
+ private Map> damageMap = new HashMap<>();
GrothamaAllDevouringWatcher() {
super(GrothamaAllDevouringWatcher.class, WatcherScope.GAME);
diff --git a/Mage.Sets/src/mage/cards/g/GuardianProject.java b/Mage.Sets/src/mage/cards/g/GuardianProject.java
index 899fcf39291..dd4dcd85a1e 100644
--- a/Mage.Sets/src/mage/cards/g/GuardianProject.java
+++ b/Mage.Sets/src/mage/cards/g/GuardianProject.java
@@ -51,14 +51,14 @@ public final class GuardianProject extends CardImpl {
class GuardianProjectTriggeredAbility extends EntersBattlefieldAllTriggeredAbility {
- public static final FilterPermanent filter = new FilterControlledCreaturePermanent();
+ public static final FilterPermanent filterNonTokenControlledCreature = new FilterControlledCreaturePermanent();
static {
- filter.add(Predicates.not(TokenPredicate.instance));
+ filterNonTokenControlledCreature.add(Predicates.not(TokenPredicate.instance));
}
GuardianProjectTriggeredAbility() {
- super(new GuardianProjectEffect(null), filter);
+ super(new GuardianProjectEffect(null), filterNonTokenControlledCreature);
}
private GuardianProjectTriggeredAbility(final GuardianProjectTriggeredAbility ability) {
diff --git a/Mage.Sets/src/mage/cards/g/GutterGrime.java b/Mage.Sets/src/mage/cards/g/GutterGrime.java
index 28fa9508b39..beacf87f741 100644
--- a/Mage.Sets/src/mage/cards/g/GutterGrime.java
+++ b/Mage.Sets/src/mage/cards/g/GutterGrime.java
@@ -72,7 +72,7 @@ class GutterGrimeTriggeredAbility extends TriggeredAbilityImpl {
if (card instanceof Permanent && !(card instanceof PermanentToken)) {
Permanent permanent = (Permanent) card;
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD
+ if (zEvent.isDiesEvent()
&& permanent.isControlledBy(this.controllerId)
&& (targetId.equals(this.getSourceId())
|| (permanent.isCreature()
diff --git a/Mage.Sets/src/mage/cards/h/HagHedgeMage.java b/Mage.Sets/src/mage/cards/h/HagHedgeMage.java
index ccbc85ed309..b7cd8bee854 100644
--- a/Mage.Sets/src/mage/cards/h/HagHedgeMage.java
+++ b/Mage.Sets/src/mage/cards/h/HagHedgeMage.java
@@ -26,8 +26,8 @@ import mage.target.common.TargetCardInYourGraveyard;
*/
public final class HagHedgeMage extends CardImpl {
- private final static FilterLandPermanent filter = new FilterLandPermanent();
- private final static FilterLandPermanent filter2 = new FilterLandPermanent();
+ private static final FilterLandPermanent filter = new FilterLandPermanent();
+ private static final FilterLandPermanent filter2 = new FilterLandPermanent();
static {
filter.add(new SubtypePredicate(SubType.SWAMP));
diff --git a/Mage.Sets/src/mage/cards/h/HammerOfNazahn.java b/Mage.Sets/src/mage/cards/h/HammerOfNazahn.java
index 686f5165e3d..a973a49601e 100644
--- a/Mage.Sets/src/mage/cards/h/HammerOfNazahn.java
+++ b/Mage.Sets/src/mage/cards/h/HammerOfNazahn.java
@@ -33,7 +33,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class HammerOfNazahn extends CardImpl {
- private final static FilterEquipmentPermanent filter = new FilterEquipmentPermanent("{this} or another Equipment");
+ private static final FilterEquipmentPermanent filter = new FilterEquipmentPermanent("{this} or another Equipment");
public HammerOfNazahn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/h/HarbingerOfTheTides.java b/Mage.Sets/src/mage/cards/h/HarbingerOfTheTides.java
index 407f1fe645c..b88edd61b70 100644
--- a/Mage.Sets/src/mage/cards/h/HarbingerOfTheTides.java
+++ b/Mage.Sets/src/mage/cards/h/HarbingerOfTheTides.java
@@ -24,7 +24,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class HarbingerOfTheTides extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature an opponent controls");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature an opponent controls");
static {
filter.add(TappedPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/h/Havoc.java b/Mage.Sets/src/mage/cards/h/Havoc.java
index 36f247a89d8..705d130dfd7 100644
--- a/Mage.Sets/src/mage/cards/h/Havoc.java
+++ b/Mage.Sets/src/mage/cards/h/Havoc.java
@@ -20,7 +20,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public final class Havoc extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("a white spell");
+ private static final FilterSpell filter = new FilterSpell("a white spell");
static {
filter.add(new ColorPredicate(ObjectColor.WHITE));
diff --git a/Mage.Sets/src/mage/cards/h/HazoretsUndyingFury.java b/Mage.Sets/src/mage/cards/h/HazoretsUndyingFury.java
index da4bc9daf01..9c6f84ce5bc 100644
--- a/Mage.Sets/src/mage/cards/h/HazoretsUndyingFury.java
+++ b/Mage.Sets/src/mage/cards/h/HazoretsUndyingFury.java
@@ -60,7 +60,7 @@ public final class HazoretsUndyingFury extends CardImpl {
class HazoretsUndyingFuryEffect extends OneShotEffect {
- private final static FilterCard filter = new FilterCard("nonland cards with converted mana cost 5 or less");
+ private static final FilterCard filter = new FilterCard("nonland cards with converted mana cost 5 or less");
static {
filter.add(Predicates.not(new CardTypePredicate(CardType.LAND)));
diff --git a/Mage.Sets/src/mage/cards/h/HeartWolf.java b/Mage.Sets/src/mage/cards/h/HeartWolf.java
index 7409660149e..3c88995a5b0 100644
--- a/Mage.Sets/src/mage/cards/h/HeartWolf.java
+++ b/Mage.Sets/src/mage/cards/h/HeartWolf.java
@@ -33,7 +33,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class HeartWolf extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(new SubtypePredicate(SubType.DWARF));
diff --git a/Mage.Sets/src/mage/cards/h/HedronAlignment.java b/Mage.Sets/src/mage/cards/h/HedronAlignment.java
index 6a8f16e8a3a..15cc1101d32 100644
--- a/Mage.Sets/src/mage/cards/h/HedronAlignment.java
+++ b/Mage.Sets/src/mage/cards/h/HedronAlignment.java
@@ -54,8 +54,8 @@ public final class HedronAlignment extends CardImpl {
class HedronAlignmentEffect extends OneShotEffect {
- private final static FilterPermanent filterPermanent = new FilterPermanent();
- private final static FilterCard filterCard = new FilterCard();
+ private static final FilterPermanent filterPermanent = new FilterPermanent();
+ private static final FilterCard filterCard = new FilterCard();
static {
filterPermanent.add(new NamePredicate("Hedron Alignment"));
diff --git a/Mage.Sets/src/mage/cards/h/HematiteTalisman.java b/Mage.Sets/src/mage/cards/h/HematiteTalisman.java
index bde61499bd3..9671fbf4f35 100644
--- a/Mage.Sets/src/mage/cards/h/HematiteTalisman.java
+++ b/Mage.Sets/src/mage/cards/h/HematiteTalisman.java
@@ -21,7 +21,7 @@ import mage.target.TargetPermanent;
*/
public final class HematiteTalisman extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("a red spell");
+ private static final FilterSpell filter = new FilterSpell("a red spell");
static {
filter.add(new ColorPredicate(ObjectColor.RED));
diff --git a/Mage.Sets/src/mage/cards/h/HiddenPredators.java b/Mage.Sets/src/mage/cards/h/HiddenPredators.java
index 689c3237cfe..9ddb3d20034 100644
--- a/Mage.Sets/src/mage/cards/h/HiddenPredators.java
+++ b/Mage.Sets/src/mage/cards/h/HiddenPredators.java
@@ -44,7 +44,7 @@ public final class HiddenPredators extends CardImpl {
class HiddenPredatorsStateTriggeredAbility extends StateTriggeredAbility {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/h/HieromancersCage.java b/Mage.Sets/src/mage/cards/h/HieromancersCage.java
index 500f420a1f8..55c0c5366da 100644
--- a/Mage.Sets/src/mage/cards/h/HieromancersCage.java
+++ b/Mage.Sets/src/mage/cards/h/HieromancersCage.java
@@ -20,7 +20,7 @@ import mage.target.TargetPermanent;
*/
public final class HieromancersCage extends CardImpl {
- private final static FilterNonlandPermanent filter = new FilterNonlandPermanent();
+ private static final FilterNonlandPermanent filter = new FilterNonlandPermanent();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/h/Hivestone.java b/Mage.Sets/src/mage/cards/h/Hivestone.java
index 8f8831507c1..4617132c446 100644
--- a/Mage.Sets/src/mage/cards/h/Hivestone.java
+++ b/Mage.Sets/src/mage/cards/h/Hivestone.java
@@ -17,7 +17,7 @@ import mage.util.SubTypeList;
*/
public final class Hivestone extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/h/HondenOfCleansingFire.java b/Mage.Sets/src/mage/cards/h/HondenOfCleansingFire.java
index 153452b9934..008c3899ef0 100644
--- a/Mage.Sets/src/mage/cards/h/HondenOfCleansingFire.java
+++ b/Mage.Sets/src/mage/cards/h/HondenOfCleansingFire.java
@@ -21,7 +21,7 @@ import java.util.UUID;
*/
public final class HondenOfCleansingFire extends CardImpl {
- final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
+ static final FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
static {
filter.add(new SubtypePredicate(SubType.SHRINE));
diff --git a/Mage.Sets/src/mage/cards/h/HondenOfInfiniteRage.java b/Mage.Sets/src/mage/cards/h/HondenOfInfiniteRage.java
index cb15e6262a7..e543cfea2ce 100644
--- a/Mage.Sets/src/mage/cards/h/HondenOfInfiniteRage.java
+++ b/Mage.Sets/src/mage/cards/h/HondenOfInfiniteRage.java
@@ -24,7 +24,7 @@ import java.util.UUID;
*/
public final class HondenOfInfiniteRage extends CardImpl {
- final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
+ static final FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
static {
filter.add(new SubtypePredicate(SubType.SHRINE));
diff --git a/Mage.Sets/src/mage/cards/h/HondenOfLifesWeb.java b/Mage.Sets/src/mage/cards/h/HondenOfLifesWeb.java
index 9fb8e848a76..82dd9e47210 100644
--- a/Mage.Sets/src/mage/cards/h/HondenOfLifesWeb.java
+++ b/Mage.Sets/src/mage/cards/h/HondenOfLifesWeb.java
@@ -22,7 +22,7 @@ import java.util.UUID;
*/
public final class HondenOfLifesWeb extends CardImpl {
- final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
+ static final FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
static {
filter.add(new SubtypePredicate(SubType.SHRINE));
diff --git a/Mage.Sets/src/mage/cards/h/HondenOfNightsReach.java b/Mage.Sets/src/mage/cards/h/HondenOfNightsReach.java
index 57a394f638f..74f72e34c99 100644
--- a/Mage.Sets/src/mage/cards/h/HondenOfNightsReach.java
+++ b/Mage.Sets/src/mage/cards/h/HondenOfNightsReach.java
@@ -23,7 +23,7 @@ import java.util.UUID;
*/
public final class HondenOfNightsReach extends CardImpl {
- final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
+ static final FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
static {
filter.add(new SubtypePredicate(SubType.SHRINE));
diff --git a/Mage.Sets/src/mage/cards/h/HondenOfSeeingWinds.java b/Mage.Sets/src/mage/cards/h/HondenOfSeeingWinds.java
index 97f4974fd41..d4954be5bbe 100644
--- a/Mage.Sets/src/mage/cards/h/HondenOfSeeingWinds.java
+++ b/Mage.Sets/src/mage/cards/h/HondenOfSeeingWinds.java
@@ -21,7 +21,7 @@ import java.util.UUID;
*/
public final class HondenOfSeeingWinds extends CardImpl {
- final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
+ static final FilterControlledPermanent filter = new FilterControlledPermanent("Shrine");
static {
filter.add(new SubtypePredicate(SubType.SHRINE));
diff --git a/Mage.Sets/src/mage/cards/h/HoodedHorror.java b/Mage.Sets/src/mage/cards/h/HoodedHorror.java
index fdf79b4f147..5afe72dec96 100644
--- a/Mage.Sets/src/mage/cards/h/HoodedHorror.java
+++ b/Mage.Sets/src/mage/cards/h/HoodedHorror.java
@@ -45,7 +45,7 @@ public final class HoodedHorror extends CardImpl {
class HoodedHorrorCantBeBlockedEffect extends RestrictionEffect {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
public HoodedHorrorCantBeBlockedEffect() {
super(Duration.WhileOnBattlefield);
diff --git a/Mage.Sets/src/mage/cards/h/HordeAmbusher.java b/Mage.Sets/src/mage/cards/h/HordeAmbusher.java
index 2f33326dbc3..74e88895dc2 100644
--- a/Mage.Sets/src/mage/cards/h/HordeAmbusher.java
+++ b/Mage.Sets/src/mage/cards/h/HordeAmbusher.java
@@ -28,7 +28,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class HordeAmbusher extends CardImpl {
- private final static FilterCard filter = new FilterCard("a red card in your hand");
+ private static final FilterCard filter = new FilterCard("a red card in your hand");
static {
filter.add(new ColorPredicate(ObjectColor.RED));
}
diff --git a/Mage.Sets/src/mage/cards/h/HordeOfNotions.java b/Mage.Sets/src/mage/cards/h/HordeOfNotions.java
index a1f81ada04a..c532a8636e7 100644
--- a/Mage.Sets/src/mage/cards/h/HordeOfNotions.java
+++ b/Mage.Sets/src/mage/cards/h/HordeOfNotions.java
@@ -27,7 +27,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*/
public final class HordeOfNotions extends CardImpl {
- private final static FilterCard filter = new FilterCard("Elemental card from your graveyard");
+ private static final FilterCard filter = new FilterCard("Elemental card from your graveyard");
static {
filter.add(new SubtypePredicate(SubType.ELEMENTAL));
diff --git a/Mage.Sets/src/mage/cards/h/HostageTaker.java b/Mage.Sets/src/mage/cards/h/HostageTaker.java
index bf8e4cd7ba6..2006065336c 100644
--- a/Mage.Sets/src/mage/cards/h/HostageTaker.java
+++ b/Mage.Sets/src/mage/cards/h/HostageTaker.java
@@ -38,7 +38,7 @@ import mage.util.CardUtil;
*/
public final class HostageTaker extends CardImpl {
- private final static FilterPermanent filter = new FilterPermanent("another target artifact or creature");
+ private static final FilterPermanent filter = new FilterPermanent("another target artifact or creature");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java b/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java
index f66fce35136..9206adf00fc 100644
--- a/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java
+++ b/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java
@@ -23,7 +23,7 @@ import mage.constants.Zone;
*/
public final class HoundOfTheFarbogs extends CardImpl {
- final static private String RULE = "{this} has menace as long as there are four or more card types among cards in your graveyard";
+ static final private String RULE = "{this} has menace as long as there are four or more card types among cards in your graveyard";
public HoundOfTheFarbogs(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HungryLynx.java b/Mage.Sets/src/mage/cards/h/HungryLynx.java
index fcd7a42ad1a..510456806f8 100644
--- a/Mage.Sets/src/mage/cards/h/HungryLynx.java
+++ b/Mage.Sets/src/mage/cards/h/HungryLynx.java
@@ -33,7 +33,7 @@ import mage.target.common.TargetOpponent;
*/
public final class HungryLynx extends CardImpl {
- private final static FilterControlledCreaturePermanent filterCat = new FilterControlledCreaturePermanent("Cats");
+ private static final FilterControlledCreaturePermanent filterCat = new FilterControlledCreaturePermanent("Cats");
static {
filterCat.add(new SubtypePredicate(SubType.CAT));
}
@@ -43,7 +43,7 @@ public final class HungryLynx extends CardImpl {
filterProRat.add(new SubtypePredicate(SubType.RAT));
}
- private final static FilterCreaturePermanent filterRat = new FilterCreaturePermanent("a Rat");
+ private static final FilterCreaturePermanent filterRat = new FilterCreaturePermanent("a Rat");
static {
filterRat.add(new SubtypePredicate(SubType.RAT));
}
diff --git a/Mage.Sets/src/mage/cards/h/HydromorphGuardian.java b/Mage.Sets/src/mage/cards/h/HydromorphGuardian.java
index e2e0ce0be08..4ed1b891f70 100644
--- a/Mage.Sets/src/mage/cards/h/HydromorphGuardian.java
+++ b/Mage.Sets/src/mage/cards/h/HydromorphGuardian.java
@@ -25,7 +25,7 @@ import mage.target.TargetSpell;
*/
public final class HydromorphGuardian extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("spell that targets one or more creatures you control");
+ private static final FilterSpell filter = new FilterSpell("spell that targets one or more creatures you control");
static {
filter.add(new TargetsPermanentPredicate(new FilterControlledCreaturePermanent()));
diff --git a/Mage.Sets/src/mage/cards/h/HydromorphGull.java b/Mage.Sets/src/mage/cards/h/HydromorphGull.java
index 999873891cd..8ad0d29c449 100644
--- a/Mage.Sets/src/mage/cards/h/HydromorphGull.java
+++ b/Mage.Sets/src/mage/cards/h/HydromorphGull.java
@@ -26,7 +26,7 @@ import mage.target.TargetSpell;
*/
public final class HydromorphGull extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("spell that targets one or more creatures you control");
+ private static final FilterSpell filter = new FilterSpell("spell that targets one or more creatures you control");
static {
filter.add(new TargetsPermanentPredicate(new FilterControlledCreaturePermanent()));
diff --git a/Mage.Sets/src/mage/cards/i/IdentityThief.java b/Mage.Sets/src/mage/cards/i/IdentityThief.java
index cfa04ef2f5f..1ba731dba64 100644
--- a/Mage.Sets/src/mage/cards/i/IdentityThief.java
+++ b/Mage.Sets/src/mage/cards/i/IdentityThief.java
@@ -34,7 +34,7 @@ import mage.target.targetpointer.FixedTarget;
*/
public final class IdentityThief extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("target nontoken creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("target nontoken creature");
static {
filter.add(Predicates.not(TokenPredicate.instance));
diff --git a/Mage.Sets/src/mage/cards/i/ImmobilizerEldrazi.java b/Mage.Sets/src/mage/cards/i/ImmobilizerEldrazi.java
index 80720c49bcf..3ddded171c8 100644
--- a/Mage.Sets/src/mage/cards/i/ImmobilizerEldrazi.java
+++ b/Mage.Sets/src/mage/cards/i/ImmobilizerEldrazi.java
@@ -25,7 +25,7 @@ import mage.game.Game;
*/
public final class ImmobilizerEldrazi extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature with toughness greater than its power");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature with toughness greater than its power");
static {
filter.add(new ImmobilizerEldraziPredicate());
diff --git a/Mage.Sets/src/mage/cards/i/InfernalTribute.java b/Mage.Sets/src/mage/cards/i/InfernalTribute.java
index 51a53d5c831..5402c969ab9 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalTribute.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalTribute.java
@@ -22,7 +22,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class InfernalTribute extends CardImpl {
- private final static FilterControlledPermanent filter = new FilterControlledPermanent("a nontoken permanent");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("a nontoken permanent");
static {
filter.add(Predicates.not(TokenPredicate.instance));
diff --git a/Mage.Sets/src/mage/cards/i/Intervene.java b/Mage.Sets/src/mage/cards/i/Intervene.java
index e4585a019e3..7fc9a864cce 100644
--- a/Mage.Sets/src/mage/cards/i/Intervene.java
+++ b/Mage.Sets/src/mage/cards/i/Intervene.java
@@ -17,7 +17,7 @@ import mage.target.TargetSpell;
*/
public final class Intervene extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("spell that targets a creature");
+ private static final FilterSpell filter = new FilterSpell("spell that targets a creature");
static {
filter.add(new TargetsPermanentPredicate(new FilterCreaturePermanent()));
diff --git a/Mage.Sets/src/mage/cards/i/InvasiveSurgery.java b/Mage.Sets/src/mage/cards/i/InvasiveSurgery.java
index 432597bd9c0..f071d979891 100644
--- a/Mage.Sets/src/mage/cards/i/InvasiveSurgery.java
+++ b/Mage.Sets/src/mage/cards/i/InvasiveSurgery.java
@@ -24,7 +24,7 @@ import mage.target.TargetSpell;
*/
public final class InvasiveSurgery extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("sorcery spell");
+ private static final FilterSpell filter = new FilterSpell("sorcery spell");
static {
filter.add(new CardTypePredicate(CardType.SORCERY));
diff --git a/Mage.Sets/src/mage/cards/i/IroncladSlayer.java b/Mage.Sets/src/mage/cards/i/IroncladSlayer.java
index 7bd1a2382c7..2a020c38659 100644
--- a/Mage.Sets/src/mage/cards/i/IroncladSlayer.java
+++ b/Mage.Sets/src/mage/cards/i/IroncladSlayer.java
@@ -22,7 +22,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*/
public final class IroncladSlayer extends CardImpl {
- private final static FilterCard filter = new FilterCard("Aura or Equipment card from your graveyard");
+ private static final FilterCard filter = new FilterCard("Aura or Equipment card from your graveyard");
static {
filter.add(Predicates.or(new SubtypePredicate(SubType.AURA), new SubtypePredicate(SubType.EQUIPMENT)));
diff --git a/Mage.Sets/src/mage/cards/i/IslandSanctuary.java b/Mage.Sets/src/mage/cards/i/IslandSanctuary.java
index aabf94d6899..b5effdc0e10 100644
--- a/Mage.Sets/src/mage/cards/i/IslandSanctuary.java
+++ b/Mage.Sets/src/mage/cards/i/IslandSanctuary.java
@@ -47,7 +47,7 @@ public final class IslandSanctuary extends CardImpl {
class IslandSanctuaryEffect extends ReplacementEffectImpl {
- private final static FilterCreaturePermanent notFlyingorIslandwalkCreatures = new FilterCreaturePermanent("except by creatures with flying and/or islandwalk");
+ private static final FilterCreaturePermanent notFlyingorIslandwalkCreatures = new FilterCreaturePermanent("except by creatures with flying and/or islandwalk");
static {
notFlyingorIslandwalkCreatures.add(Predicates.not(new AbilityPredicate(FlyingAbility.class)));
diff --git a/Mage.Sets/src/mage/cards/i/IsolationZone.java b/Mage.Sets/src/mage/cards/i/IsolationZone.java
index 3867b799b91..3ae0ee0781c 100644
--- a/Mage.Sets/src/mage/cards/i/IsolationZone.java
+++ b/Mage.Sets/src/mage/cards/i/IsolationZone.java
@@ -28,7 +28,7 @@ import mage.util.CardUtil;
*/
public final class IsolationZone extends CardImpl {
- private final static FilterPermanent filter = new FilterPermanent("creature or enchantment an opponent controls");
+ private static final FilterPermanent filter = new FilterPermanent("creature or enchantment an opponent controls");
static {
filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE),
diff --git a/Mage.Sets/src/mage/cards/i/IxalansBinding.java b/Mage.Sets/src/mage/cards/i/IxalansBinding.java
index 95be9e826b8..a1424f478f3 100644
--- a/Mage.Sets/src/mage/cards/i/IxalansBinding.java
+++ b/Mage.Sets/src/mage/cards/i/IxalansBinding.java
@@ -27,7 +27,7 @@ import java.util.UUID;
*/
public final class IxalansBinding extends CardImpl {
- private final static FilterNonlandPermanent filter = new FilterNonlandPermanent();
+ private static final FilterNonlandPermanent filter = new FilterNonlandPermanent();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/k/KalonianTwingrove.java b/Mage.Sets/src/mage/cards/k/KalonianTwingrove.java
index f30969c2793..e4628b30450 100644
--- a/Mage.Sets/src/mage/cards/k/KalonianTwingrove.java
+++ b/Mage.Sets/src/mage/cards/k/KalonianTwingrove.java
@@ -26,7 +26,7 @@ import mage.game.permanent.token.KalonianTwingroveTreefolkWarriorToken;
*/
public final class KalonianTwingrove extends CardImpl {
- final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
+ static final FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
static {
filterLands.add(new SubtypePredicate(SubType.FOREST));
diff --git a/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java b/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java
index db01b9f2226..579f1cdb085 100644
--- a/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java
+++ b/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java
@@ -1,4 +1,3 @@
-
package mage.cards.k;
import java.util.UUID;
@@ -148,10 +147,14 @@ class KaradorGhostChieftainCastFromGraveyardEffect extends AsThoughEffectImpl {
@Override
public boolean applies(UUID objectId, Ability source, UUID affectedControllerId, Game game) {
- if (objectId.equals(getTargetPointer().getFirst(game, source))) {
+ Card objectCard = game.getCard(objectId);
+ if (objectCard.getId().equals(getTargetPointer().getFirst(game, source))
+ && objectCard.isCreature()
+ && objectCard.getSpellAbility() != null
+ && objectCard.getSpellAbility().spellCanBeActivatedRegularlyNow(affectedControllerId, game)) {
if (affectedControllerId.equals(source.getControllerId())) {
KaradorGhostChieftainWatcher watcher = game.getState().getWatcher(KaradorGhostChieftainWatcher.class, source.getSourceId());
- return watcher != null && !watcher.isAbilityUsed();
+ return watcher != null && !watcher.isAbilityUsed();
}
}
return false;
diff --git a/Mage.Sets/src/mage/cards/k/KorEntanglers.java b/Mage.Sets/src/mage/cards/k/KorEntanglers.java
index 30a2b08e5e0..68281bfe4bc 100644
--- a/Mage.Sets/src/mage/cards/k/KorEntanglers.java
+++ b/Mage.Sets/src/mage/cards/k/KorEntanglers.java
@@ -21,7 +21,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class KorEntanglers extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java b/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java
index bb9df93824a..2b3d30d85f8 100644
--- a/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java
+++ b/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java
@@ -31,7 +31,7 @@ import mage.players.Player;
*/
public final class KothophedSoulHoarder extends CardImpl {
- private final static FilterPermanent filter = new FilterPermanent();
+ private static final FilterPermanent filter = new FilterPermanent();
static {
filter.add(new OwnerPredicate(TargetController.NOT_YOU));
diff --git a/Mage.Sets/src/mage/cards/l/LapisLazuliTalisman.java b/Mage.Sets/src/mage/cards/l/LapisLazuliTalisman.java
index 5a54db01e41..f94965c1a73 100644
--- a/Mage.Sets/src/mage/cards/l/LapisLazuliTalisman.java
+++ b/Mage.Sets/src/mage/cards/l/LapisLazuliTalisman.java
@@ -21,7 +21,7 @@ import mage.target.TargetPermanent;
*/
public final class LapisLazuliTalisman extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("a blue spell");
+ private static final FilterSpell filter = new FilterSpell("a blue spell");
static {
filter.add(new ColorPredicate(ObjectColor.BLUE));
diff --git a/Mage.Sets/src/mage/cards/l/LiberatingCombustion.java b/Mage.Sets/src/mage/cards/l/LiberatingCombustion.java
index 3594272808a..339bdf95df6 100644
--- a/Mage.Sets/src/mage/cards/l/LiberatingCombustion.java
+++ b/Mage.Sets/src/mage/cards/l/LiberatingCombustion.java
@@ -17,7 +17,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class LiberatingCombustion extends CardImpl {
- private final static FilterCard filter = new FilterCard("Chandra, Pyrogenius");
+ private static final FilterCard filter = new FilterCard("Chandra, Pyrogenius");
static {
filter.add(new NamePredicate("Chandra, Pyrogenius"));
diff --git a/Mage.Sets/src/mage/cards/l/LightningCloud.java b/Mage.Sets/src/mage/cards/l/LightningCloud.java
index ddd5835798a..d3aa563ea6b 100644
--- a/Mage.Sets/src/mage/cards/l/LightningCloud.java
+++ b/Mage.Sets/src/mage/cards/l/LightningCloud.java
@@ -21,7 +21,7 @@ import mage.target.common.TargetAnyTarget;
*/
public final class LightningCloud extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("a red spell");
+ private static final FilterSpell filter = new FilterSpell("a red spell");
static {
filter.add(new ColorPredicate(ObjectColor.RED));
diff --git a/Mage.Sets/src/mage/cards/l/LilianasInfluence.java b/Mage.Sets/src/mage/cards/l/LilianasInfluence.java
index a9876a6855c..7ba1d7345a5 100644
--- a/Mage.Sets/src/mage/cards/l/LilianasInfluence.java
+++ b/Mage.Sets/src/mage/cards/l/LilianasInfluence.java
@@ -20,8 +20,8 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class LilianasInfluence extends CardImpl {
- private final static FilterCard filter = new FilterCard("Liliana, Death Wielder");
- private final static FilterCreaturePermanent filterCreatures = new FilterCreaturePermanent("creature you don't control");
+ private static final FilterCard filter = new FilterCard("Liliana, Death Wielder");
+ private static final FilterCreaturePermanent filterCreatures = new FilterCreaturePermanent("creature you don't control");
static {
filter.add(new NamePredicate("Liliana, Death Wielder"));
diff --git a/Mage.Sets/src/mage/cards/m/MagneticMine.java b/Mage.Sets/src/mage/cards/m/MagneticMine.java
index 204bf024726..36dad78e355 100644
--- a/Mage.Sets/src/mage/cards/m/MagneticMine.java
+++ b/Mage.Sets/src/mage/cards/m/MagneticMine.java
@@ -58,8 +58,7 @@ class MagneticMineTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD
- && zEvent.getToZone() == Zone.GRAVEYARD
+ if (zEvent.isDiesEvent()
&& zEvent.getTarget().isArtifact()
&& !Objects.equals(zEvent.getTarget().getId(), this.getSourceId())) {
this.getTargets().get(0).add(zEvent.getTarget().getControllerId(), game);
diff --git a/Mage.Sets/src/mage/cards/m/MalachiteTalisman.java b/Mage.Sets/src/mage/cards/m/MalachiteTalisman.java
index 35e2289a12e..fb71ecab761 100644
--- a/Mage.Sets/src/mage/cards/m/MalachiteTalisman.java
+++ b/Mage.Sets/src/mage/cards/m/MalachiteTalisman.java
@@ -21,7 +21,7 @@ import mage.target.TargetPermanent;
*/
public final class MalachiteTalisman extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("a green spell");
+ private static final FilterSpell filter = new FilterSpell("a green spell");
static {
filter.add(new ColorPredicate(ObjectColor.GREEN));
diff --git a/Mage.Sets/src/mage/cards/m/ManaWeb.java b/Mage.Sets/src/mage/cards/m/ManaWeb.java
index 20c06c5a7fa..5fce3c5d7b1 100644
--- a/Mage.Sets/src/mage/cards/m/ManaWeb.java
+++ b/Mage.Sets/src/mage/cards/m/ManaWeb.java
@@ -85,7 +85,7 @@ class ManaWebTriggeredAbility extends TriggeredAbilityImpl {
class ManaWebeffect extends OneShotEffect {
- private final static FilterLandPermanent filter = new FilterLandPermanent("an opponent taps a land");
+ private static final FilterLandPermanent filter = new FilterLandPermanent("an opponent taps a land");
public ManaWebeffect() {
super(Outcome.Tap);
diff --git a/Mage.Sets/src/mage/cards/m/MaraudingMaulhorn.java b/Mage.Sets/src/mage/cards/m/MaraudingMaulhorn.java
index 389a96dd0f3..2aaf0d54082 100644
--- a/Mage.Sets/src/mage/cards/m/MaraudingMaulhorn.java
+++ b/Mage.Sets/src/mage/cards/m/MaraudingMaulhorn.java
@@ -20,7 +20,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*/
public final class MaraudingMaulhorn extends CardImpl {
- private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature named Advocate of the Beast");
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature named Advocate of the Beast");
static {
filter.add(new NamePredicate("Advocate of the Beast"));
diff --git a/Mage.Sets/src/mage/cards/m/MausoleumHarpy.java b/Mage.Sets/src/mage/cards/m/MausoleumHarpy.java
index 9d78d64c7fb..e1e100f8d9e 100644
--- a/Mage.Sets/src/mage/cards/m/MausoleumHarpy.java
+++ b/Mage.Sets/src/mage/cards/m/MausoleumHarpy.java
@@ -25,7 +25,7 @@ import java.util.UUID;
*/
public final class MausoleumHarpy extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/m/MerchantsDockhand.java b/Mage.Sets/src/mage/cards/m/MerchantsDockhand.java
index 6c160eca919..e6f65a9075b 100644
--- a/Mage.Sets/src/mage/cards/m/MerchantsDockhand.java
+++ b/Mage.Sets/src/mage/cards/m/MerchantsDockhand.java
@@ -112,7 +112,7 @@ class MerchantsDockhandEffect extends OneShotEffect {
class TapXTargetCost extends VariableCostImpl {
- final static FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent("untapped artifacts you control");
+ static final FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent("untapped artifacts you control");
static {
filter.add(Predicates.not(TappedPredicate.instance));
diff --git a/Mage.Sets/src/mage/cards/m/Mirrorworks.java b/Mage.Sets/src/mage/cards/m/Mirrorworks.java
index c96992b9a42..95b8e4cc1d7 100644
--- a/Mage.Sets/src/mage/cards/m/Mirrorworks.java
+++ b/Mage.Sets/src/mage/cards/m/Mirrorworks.java
@@ -23,7 +23,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*/
public final class Mirrorworks extends CardImpl {
- private final static FilterArtifactPermanent filter = new FilterArtifactPermanent("another nontoken artifact");
+ private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("another nontoken artifact");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/m/MolderBeast.java b/Mage.Sets/src/mage/cards/m/MolderBeast.java
index 1547e0e79c0..b598f362f2a 100644
--- a/Mage.Sets/src/mage/cards/m/MolderBeast.java
+++ b/Mage.Sets/src/mage/cards/m/MolderBeast.java
@@ -62,8 +62,7 @@ class MolderBeastTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- return zEvent.getFromZone() == Zone.BATTLEFIELD
- && zEvent.getToZone() == Zone.GRAVEYARD
+ return zEvent.isDiesEvent()
&& zEvent.getTarget().isArtifact();
}
diff --git a/Mage.Sets/src/mage/cards/m/MoltenSentry.java b/Mage.Sets/src/mage/cards/m/MoltenSentry.java
index d39b4c15517..31ec8892fd9 100644
--- a/Mage.Sets/src/mage/cards/m/MoltenSentry.java
+++ b/Mage.Sets/src/mage/cards/m/MoltenSentry.java
@@ -25,7 +25,7 @@ import mage.players.Player;
*/
public final class MoltenSentry extends CardImpl {
- private final static String rule = "As {this} enters the battlefield, flip a coin. If the coin comes up heads, {this} enters the battlefield as a "
+ private static final String rule = "As {this} enters the battlefield, flip a coin. If the coin comes up heads, {this} enters the battlefield as a "
+ "5/2 creature with haste. If it comes up tails, {this} enters the battlefield as a 2/5 creature with defender.";
public MoltenSentry(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/m/MoonlightHunt.java b/Mage.Sets/src/mage/cards/m/MoonlightHunt.java
index 1a4d3aa743c..a5d51d980ec 100644
--- a/Mage.Sets/src/mage/cards/m/MoonlightHunt.java
+++ b/Mage.Sets/src/mage/cards/m/MoonlightHunt.java
@@ -25,7 +25,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class MoonlightHunt extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
static {
filter.add(new ControllerPredicate(TargetController.NOT_YOU));
@@ -51,7 +51,7 @@ public final class MoonlightHunt extends CardImpl {
class MoonlightHuntEffect extends OneShotEffect {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(Predicates.or(new SubtypePredicate(SubType.WOLF), new SubtypePredicate(SubType.WEREWOLF)));
diff --git a/Mage.Sets/src/mage/cards/m/MoriokScavenger.java b/Mage.Sets/src/mage/cards/m/MoriokScavenger.java
index efc4865b8c8..a2ef0d47338 100644
--- a/Mage.Sets/src/mage/cards/m/MoriokScavenger.java
+++ b/Mage.Sets/src/mage/cards/m/MoriokScavenger.java
@@ -20,7 +20,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*/
public final class MoriokScavenger extends CardImpl {
- final static FilterCreatureCard filter = new FilterCreatureCard("artifact creature card from your graveyard");
+ static final FilterCreatureCard filter = new FilterCreatureCard("artifact creature card from your graveyard");
static {
filter.add(new CardTypePredicate(CardType.ARTIFACT));
diff --git a/Mage.Sets/src/mage/cards/m/MurderousCompulsion.java b/Mage.Sets/src/mage/cards/m/MurderousCompulsion.java
index 5056353cdca..b26b8ec57fe 100644
--- a/Mage.Sets/src/mage/cards/m/MurderousCompulsion.java
+++ b/Mage.Sets/src/mage/cards/m/MurderousCompulsion.java
@@ -18,7 +18,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class MurderousCompulsion extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
static {
filter.add(TappedPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/m/MyriadLandscape.java b/Mage.Sets/src/mage/cards/m/MyriadLandscape.java
index d4aa18ce39b..be5c3e2e26c 100644
--- a/Mage.Sets/src/mage/cards/m/MyriadLandscape.java
+++ b/Mage.Sets/src/mage/cards/m/MyriadLandscape.java
@@ -68,19 +68,19 @@ public final class MyriadLandscape extends CardImpl {
class TargetCardInLibrarySharingLandType extends TargetCardInLibrary {
- private static final FilterCard filter = new FilterCard("basic land card");
+ private static final FilterCard filterBasicLandCard = new FilterCard("basic land card");
static {
List> subTypePreds = new ArrayList<>();
for (SubType landType : SubType.getLandTypes()) {
subTypePreds.add(new SubtypePredicate(landType));
}
- filter.add(Predicates.or(subTypePreds));
- filter.add(new SupertypePredicate(SuperType.BASIC));
+ filterBasicLandCard.add(Predicates.or(subTypePreds));
+ filterBasicLandCard.add(new SupertypePredicate(SuperType.BASIC));
}
public TargetCardInLibrarySharingLandType(int minNumTargets, int maxNumTargets) {
- super(minNumTargets, maxNumTargets, filter);
+ super(minNumTargets, maxNumTargets, filterBasicLandCard);
}
public TargetCardInLibrarySharingLandType(final TargetCardInLibrarySharingLandType target) {
diff --git a/Mage.Sets/src/mage/cards/n/NacreTalisman.java b/Mage.Sets/src/mage/cards/n/NacreTalisman.java
index e995f40a399..439180b1c72 100644
--- a/Mage.Sets/src/mage/cards/n/NacreTalisman.java
+++ b/Mage.Sets/src/mage/cards/n/NacreTalisman.java
@@ -21,7 +21,7 @@ import mage.target.TargetPermanent;
*/
public final class NacreTalisman extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("a white spell");
+ private static final FilterSpell filter = new FilterSpell("a white spell");
static {
filter.add(new ColorPredicate(ObjectColor.WHITE));
diff --git a/Mage.Sets/src/mage/cards/n/NaturesWay.java b/Mage.Sets/src/mage/cards/n/NaturesWay.java
index 49d697e5f3b..ce8752367ca 100644
--- a/Mage.Sets/src/mage/cards/n/NaturesWay.java
+++ b/Mage.Sets/src/mage/cards/n/NaturesWay.java
@@ -23,7 +23,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class NaturesWay extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
static {
filter.add(new ControllerPredicate(TargetController.NOT_YOU));
diff --git a/Mage.Sets/src/mage/cards/n/NecromancersMagemark.java b/Mage.Sets/src/mage/cards/n/NecromancersMagemark.java
index c80c8ff70a7..1be965cbc83 100644
--- a/Mage.Sets/src/mage/cards/n/NecromancersMagemark.java
+++ b/Mage.Sets/src/mage/cards/n/NecromancersMagemark.java
@@ -111,7 +111,7 @@ class NecromancersMagemarkEffect extends ReplacementEffectImpl {
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
Permanent permanent = ((ZoneChangeEvent) event).getTarget();
if (permanent != null && permanent.isControlledBy(source.getControllerId())) {
for (UUID attachmentId : permanent.getAttachments()) {
diff --git a/Mage.Sets/src/mage/cards/n/Necromancy.java b/Mage.Sets/src/mage/cards/n/Necromancy.java
index fe12c03723a..50d87e1e836 100644
--- a/Mage.Sets/src/mage/cards/n/Necromancy.java
+++ b/Mage.Sets/src/mage/cards/n/Necromancy.java
@@ -138,7 +138,7 @@ class NecromancyLeavesBattlefieldTriggeredEffect extends OneShotEffect {
class NecromancyChangeAbilityEffect extends ContinuousEffectImpl implements SourceEffect {
- private final static Ability newAbility = new EnchantAbility("creature put onto the battlefield with Necromancy");
+ private static final Ability newAbility = new EnchantAbility("creature put onto the battlefield with Necromancy");
static {
newAbility.setRuleAtTheTop(true);
diff --git a/Mage.Sets/src/mage/cards/n/Necroskitter.java b/Mage.Sets/src/mage/cards/n/Necroskitter.java
index 1cd96428c00..7fcfaea1b95 100644
--- a/Mage.Sets/src/mage/cards/n/Necroskitter.java
+++ b/Mage.Sets/src/mage/cards/n/Necroskitter.java
@@ -74,7 +74,7 @@ class NecroskitterTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
Permanent permanent = zEvent.getTarget();
if (permanent != null
&& permanent.getCounters(game).containsKey(CounterType.M1M1)
diff --git a/Mage.Sets/src/mage/cards/n/NetherTraitor.java b/Mage.Sets/src/mage/cards/n/NetherTraitor.java
index 269030fc48e..34d6a5fea4a 100644
--- a/Mage.Sets/src/mage/cards/n/NetherTraitor.java
+++ b/Mage.Sets/src/mage/cards/n/NetherTraitor.java
@@ -79,7 +79,7 @@ class NetherTraitorTriggeredAbility extends TriggeredAbilityImpl {
return false;
}
}
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
if (zEvent.getTarget() != null &&
zEvent.getTarget().isOwnedBy(this.getControllerId()) &&
zEvent.getTarget().isCreature()&&
diff --git a/Mage.Sets/src/mage/cards/n/NettlingImp.java b/Mage.Sets/src/mage/cards/n/NettlingImp.java
index 54fb70dae42..c96717e7530 100644
--- a/Mage.Sets/src/mage/cards/n/NettlingImp.java
+++ b/Mage.Sets/src/mage/cards/n/NettlingImp.java
@@ -33,7 +33,7 @@ import mage.watchers.common.AttackedThisTurnWatcher;
*/
public final class NettlingImp extends CardImpl {
- final static FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall");
+ static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall");
static {
filter.add(Predicates.not(new SubtypePredicate(SubType.WALL)));
diff --git a/Mage.Sets/src/mage/cards/n/NeurokTransmuter.java b/Mage.Sets/src/mage/cards/n/NeurokTransmuter.java
index 886d089c0b3..f7a8b2c2273 100644
--- a/Mage.Sets/src/mage/cards/n/NeurokTransmuter.java
+++ b/Mage.Sets/src/mage/cards/n/NeurokTransmuter.java
@@ -31,7 +31,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class NeurokTransmuter extends CardImpl {
- final static FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
+ static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
static {
filter.add(new CardTypePredicate(CardType.ARTIFACT));
diff --git a/Mage.Sets/src/mage/cards/n/NiambiFaithfulHealer.java b/Mage.Sets/src/mage/cards/n/NiambiFaithfulHealer.java
index 07ef2682dc0..eac1abe1521 100644
--- a/Mage.Sets/src/mage/cards/n/NiambiFaithfulHealer.java
+++ b/Mage.Sets/src/mage/cards/n/NiambiFaithfulHealer.java
@@ -19,7 +19,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*/
public final class NiambiFaithfulHealer extends CardImpl {
- private final static FilterCard filter = new FilterCard("Teferi, Timebender");
+ private static final FilterCard filter = new FilterCard("Teferi, Timebender");
static {
filter.add(new NamePredicate("Teferi, Timebender"));
diff --git a/Mage.Sets/src/mage/cards/n/NissasChosen.java b/Mage.Sets/src/mage/cards/n/NissasChosen.java
index 464d54f53ef..d29dd45a7ef 100644
--- a/Mage.Sets/src/mage/cards/n/NissasChosen.java
+++ b/Mage.Sets/src/mage/cards/n/NissasChosen.java
@@ -73,7 +73,7 @@ class NissasChosenEffect extends ReplacementEffectImpl {
public boolean applies(GameEvent event, Ability source, Game game) {
if (event.getTargetId().equals(source.getSourceId())) {
ZoneChangeEvent zEvent = (ZoneChangeEvent)event;
- if ( zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD ) {
+ if ( zEvent.isDiesEvent() ) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/n/NissasDefeat.java b/Mage.Sets/src/mage/cards/n/NissasDefeat.java
index 09cbbdc2beb..829cbcd1edd 100644
--- a/Mage.Sets/src/mage/cards/n/NissasDefeat.java
+++ b/Mage.Sets/src/mage/cards/n/NissasDefeat.java
@@ -26,7 +26,7 @@ import mage.target.TargetPermanent;
*/
public final class NissasDefeat extends CardImpl {
- private final static FilterPermanent filter = new FilterPermanent("Forest, green enchantment, or green planeswalker");
+ private static final FilterPermanent filter = new FilterPermanent("Forest, green enchantment, or green planeswalker");
static {
filter.add(Predicates.or(new SubtypePredicate(SubType.FOREST),
diff --git a/Mage.Sets/src/mage/cards/n/NissasJudgment.java b/Mage.Sets/src/mage/cards/n/NissasJudgment.java
index 554ddd8068c..cdb1103af43 100644
--- a/Mage.Sets/src/mage/cards/n/NissasJudgment.java
+++ b/Mage.Sets/src/mage/cards/n/NissasJudgment.java
@@ -27,7 +27,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*/
public final class NissasJudgment extends CardImpl {
- private final static FilterCreaturePermanent FILTER = new FilterCreaturePermanent("creature an opponent controls");
+ private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("creature an opponent controls");
static {
FILTER.add(new ControllerPredicate(TargetController.OPPONENT));
@@ -59,8 +59,8 @@ public final class NissasJudgment extends CardImpl {
class NissasJudgmentEffect extends OneShotEffect {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
- private final static FilterCreaturePermanent filterWithCounter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
+ private static final FilterCreaturePermanent filterWithCounter = new FilterCreaturePermanent();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/n/NoggleHedgeMage.java b/Mage.Sets/src/mage/cards/n/NoggleHedgeMage.java
index c117f727616..c459491f62e 100644
--- a/Mage.Sets/src/mage/cards/n/NoggleHedgeMage.java
+++ b/Mage.Sets/src/mage/cards/n/NoggleHedgeMage.java
@@ -27,8 +27,8 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
*/
public final class NoggleHedgeMage extends CardImpl {
- private final static FilterLandPermanent filter = new FilterLandPermanent();
- private final static FilterLandPermanent filter2 = new FilterLandPermanent();
+ private static final FilterLandPermanent filter = new FilterLandPermanent();
+ private static final FilterLandPermanent filter2 = new FilterLandPermanent();
static {
filter.add(new SubtypePredicate(SubType.ISLAND));
diff --git a/Mage.Sets/src/mage/cards/n/NullChamber.java b/Mage.Sets/src/mage/cards/n/NullChamber.java
new file mode 100644
index 00000000000..c235e31d0f2
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/n/NullChamber.java
@@ -0,0 +1,98 @@
+package mage.cards.n;
+
+import java.util.UUID;
+import mage.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.common.AsEntersBattlefieldAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.ChooseACardNameEffect;
+import mage.constants.SuperType;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.cards.repository.CardRepository;
+import mage.choices.Choice;
+import mage.choices.ChoiceImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.util.CardUtil;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class NullChamber extends CardImpl {
+
+ public NullChamber(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
+
+ this.addSuperType(SuperType.WORLD);
+
+ // As Null Chamber enters the battlefield, you and an opponent each name a card other than a basic land card.
+ // The named cards can't be played.
+ this.addAbility(new AsEntersBattlefieldAbility(new ChooseACardNameEffect(ChooseACardNameEffect.TypeOfName.NOT_BASIC_LAND_NAME)));
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new NullChamberReplacementEffect()));
+
+ }
+
+ public NullChamber(final NullChamber card) {
+ super(card);
+ }
+
+ @Override
+ public NullChamber copy() {
+ return new NullChamber(this);
+ }
+}
+
+
+class NullChamberReplacementEffect extends ContinuousRuleModifyingEffectImpl {
+
+ public NullChamberReplacementEffect() {
+ super(Duration.WhileOnBattlefield, Outcome.AIDontUseIt);
+ staticText = "The named cards can't be played";
+ }
+
+ public NullChamberReplacementEffect(final NullChamberReplacementEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public NullChamberReplacementEffect copy() {
+ return new NullChamberReplacementEffect(this);
+ }
+
+ @Override
+ public String getInfoMessage(Ability source, GameEvent event, Game game) {
+ MageObject mageObject = game.getObject(source.getSourceId());
+ if (mageObject != null) {
+ return "You can't cast a spell with that name (" + mageObject.getLogName() + " in play).";
+ }
+ return null;
+ }
+
+ @Override
+ public boolean checksEventType(GameEvent event, Game game) {
+ return event.getType() == EventType.CAST_SPELL;
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ MageObject object = game.getObject(event.getSourceId());
+ return (object != null
+ && object.getName().equals(game.getState().getValue(source.getSourceId().toString() + ChooseACardNameEffect.INFO_KEY)));
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/cards/n/NutCollector.java b/Mage.Sets/src/mage/cards/n/NutCollector.java
index fc95c907353..69a240a6cdd 100644
--- a/Mage.Sets/src/mage/cards/n/NutCollector.java
+++ b/Mage.Sets/src/mage/cards/n/NutCollector.java
@@ -23,7 +23,7 @@ import mage.game.permanent.token.SquirrelToken;
*/
public final class NutCollector extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("squirrel");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("squirrel");
static {
filter.add(new SubtypePredicate(SubType.SQUIRREL));
diff --git a/Mage.Sets/src/mage/cards/o/OathOfChandra.java b/Mage.Sets/src/mage/cards/o/OathOfChandra.java
index a2a574a5e3d..b71fc7388ac 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfChandra.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfChandra.java
@@ -30,7 +30,7 @@ import mage.watchers.Watcher;
*/
public final class OathOfChandra extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/o/OathOfLimDul.java b/Mage.Sets/src/mage/cards/o/OathOfLimDul.java
index 2d3aa09c5a7..f650fe48156 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfLimDul.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfLimDul.java
@@ -88,7 +88,7 @@ class OathOfLimDulTriggeredAbility extends TriggeredAbilityImpl {
class OathOfLimDulEffect extends OneShotEffect {
- private final static FilterControlledPermanent filter = new FilterControlledPermanent("controlled permanent other than Oath of Lim-Dul");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("controlled permanent other than Oath of Lim-Dul");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/o/OathOfNissa.java b/Mage.Sets/src/mage/cards/o/OathOfNissa.java
index 514e75cb565..6f3fd0a6970 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfNissa.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfNissa.java
@@ -48,7 +48,7 @@ public final class OathOfNissa extends CardImpl {
class OathOfNissaEffect extends OneShotEffect {
- private final static FilterCard filter = new FilterCard("a creature, land, or planeswalker card");
+ private static final FilterCard filter = new FilterCard("a creature, land, or planeswalker card");
static {
filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE),
diff --git a/Mage.Sets/src/mage/cards/o/OathOfTeferi.java b/Mage.Sets/src/mage/cards/o/OathOfTeferi.java
index db292a88a07..b71265aaf5f 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfTeferi.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfTeferi.java
@@ -33,7 +33,7 @@ import mage.target.targetpointer.FixedTarget;
*/
public final class OathOfTeferi extends CardImpl {
- private final static FilterControlledPermanent filter = new FilterControlledPermanent("another target permanent you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("another target permanent you control");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/o/OgreBattledriver.java b/Mage.Sets/src/mage/cards/o/OgreBattledriver.java
index 4986765662d..accee718865 100644
--- a/Mage.Sets/src/mage/cards/o/OgreBattledriver.java
+++ b/Mage.Sets/src/mage/cards/o/OgreBattledriver.java
@@ -26,7 +26,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class OgreBattledriver extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/o/OnyxTalisman.java b/Mage.Sets/src/mage/cards/o/OnyxTalisman.java
index 47beb9b9019..75d3edb13f7 100644
--- a/Mage.Sets/src/mage/cards/o/OnyxTalisman.java
+++ b/Mage.Sets/src/mage/cards/o/OnyxTalisman.java
@@ -21,7 +21,7 @@ import mage.target.TargetPermanent;
*/
public final class OnyxTalisman extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("a black spell");
+ private static final FilterSpell filter = new FilterSpell("a black spell");
static {
filter.add(new ColorPredicate(ObjectColor.BLACK));
diff --git a/Mage.Sets/src/mage/cards/o/OpenTheArmory.java b/Mage.Sets/src/mage/cards/o/OpenTheArmory.java
index d529110cf8f..a0063c18b63 100644
--- a/Mage.Sets/src/mage/cards/o/OpenTheArmory.java
+++ b/Mage.Sets/src/mage/cards/o/OpenTheArmory.java
@@ -40,15 +40,15 @@ public final class OpenTheArmory extends CardImpl {
class OpenTheArmoryTarget extends TargetCardInLibrary {
- private static final FilterCard filter = new FilterCard("Aura or Equipment card");
+ private static final FilterCard auraOrEquipmentTarget = new FilterCard("Aura or Equipment card");
static {
- filter.add(Predicates.or(
+ auraOrEquipmentTarget.add(Predicates.or(
new SubtypePredicate(SubType.EQUIPMENT),
new SubtypePredicate(SubType.AURA)));
}
public OpenTheArmoryTarget() {
- super(1, 1, filter.copy());
+ super(1, 1, auraOrEquipmentTarget.copy());
}
public OpenTheArmoryTarget(final OpenTheArmoryTarget target) {
@@ -64,7 +64,7 @@ class OpenTheArmoryTarget extends TargetCardInLibrary {
public boolean canTarget(UUID id, Cards cards, Game game) {
Card card = cards.get(id, game);
if (card != null) {
- return filter.match(card, game);
+ return auraOrEquipmentTarget.match(card, game);
}
return false;
}
diff --git a/Mage.Sets/src/mage/cards/o/OrchardSpirit.java b/Mage.Sets/src/mage/cards/o/OrchardSpirit.java
index f6d5dec0ff6..d022aacc943 100644
--- a/Mage.Sets/src/mage/cards/o/OrchardSpirit.java
+++ b/Mage.Sets/src/mage/cards/o/OrchardSpirit.java
@@ -22,7 +22,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*/
public final class OrchardSpirit extends CardImpl {
- private final static FilterCreaturePermanent notFlyingorReachCreatures = new FilterCreaturePermanent("except by creatures with flying or reach");
+ private static final FilterCreaturePermanent notFlyingorReachCreatures = new FilterCreaturePermanent("except by creatures with flying or reach");
static {
notFlyingorReachCreatures.add(Predicates.not(
diff --git a/Mage.Sets/src/mage/cards/o/OtherworldlyOutburst.java b/Mage.Sets/src/mage/cards/o/OtherworldlyOutburst.java
index 846dac4694c..526cd50866b 100644
--- a/Mage.Sets/src/mage/cards/o/OtherworldlyOutburst.java
+++ b/Mage.Sets/src/mage/cards/o/OtherworldlyOutburst.java
@@ -91,7 +91,7 @@ class OtherworldlyOutburstDelayedTriggeredAbility extends DelayedTriggeredAbilit
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getTargetId().equals(target)) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/o/OupheVandals.java b/Mage.Sets/src/mage/cards/o/OupheVandals.java
index d4847067598..2c89a1075f5 100644
--- a/Mage.Sets/src/mage/cards/o/OupheVandals.java
+++ b/Mage.Sets/src/mage/cards/o/OupheVandals.java
@@ -32,7 +32,7 @@ import mage.target.common.TargetActivatedOrTriggeredAbility;
*/
public final class OupheVandals extends CardImpl {
- private final static FilterStackObject filter = new FilterStackObject("ability from an artifact source");
+ private static final FilterStackObject filter = new FilterStackObject("ability from an artifact source");
static {
filter.add(new ArtifactSourcePredicate());
diff --git a/Mage.Sets/src/mage/cards/o/OutpostSiege.java b/Mage.Sets/src/mage/cards/o/OutpostSiege.java
index 2fabfdbc093..4062fa1c786 100644
--- a/Mage.Sets/src/mage/cards/o/OutpostSiege.java
+++ b/Mage.Sets/src/mage/cards/o/OutpostSiege.java
@@ -35,8 +35,8 @@ import mage.target.targetpointer.FixedTarget;
*/
public final class OutpostSiege extends CardImpl {
- private final static String ruleTrigger1 = "&bull Khans — At the beginning of your upkeep, exile the top card of your library. Until end of turn, you may play that card.";
- private final static String ruleTrigger2 = "&bull Dragons — Whenever a creature you control leaves the battlefield, {this} deals 1 damage to any target.";
+ private static final String ruleTrigger1 = "&bull Khans — At the beginning of your upkeep, exile the top card of your library. Until end of turn, you may play that card.";
+ private static final String ruleTrigger2 = "&bull Dragons — Whenever a creature you control leaves the battlefield, {this} deals 1 damage to any target.";
public OutpostSiege(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/p/PainSeer.java b/Mage.Sets/src/mage/cards/p/PainSeer.java
index f5758152186..f14b4a5bc89 100644
--- a/Mage.Sets/src/mage/cards/p/PainSeer.java
+++ b/Mage.Sets/src/mage/cards/p/PainSeer.java
@@ -71,7 +71,7 @@ class PainSeerEffect extends OneShotEffect {
if (card != null) {
Cards cards = new CardsImpl(card);
player.revealCards("Pain Seer", cards, game);
- if (card.moveToZone(Zone.HAND, source.getSourceId(), game, false)) {
+ if(player.moveCards(card, Zone.HAND, source, game)) {
player.loseLife(card.getConvertedManaCost(), game, false);
return true;
}
diff --git a/Mage.Sets/src/mage/cards/p/PalaceJailer.java b/Mage.Sets/src/mage/cards/p/PalaceJailer.java
index d2d832438a6..4ecbe074132 100644
--- a/Mage.Sets/src/mage/cards/p/PalaceJailer.java
+++ b/Mage.Sets/src/mage/cards/p/PalaceJailer.java
@@ -35,7 +35,7 @@ import mage.util.CardUtil;
*/
public final class PalaceJailer extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/p/PalaceSiege.java b/Mage.Sets/src/mage/cards/p/PalaceSiege.java
index 97624a9c482..e73cefcb5e7 100644
--- a/Mage.Sets/src/mage/cards/p/PalaceSiege.java
+++ b/Mage.Sets/src/mage/cards/p/PalaceSiege.java
@@ -26,8 +26,8 @@ import java.util.UUID;
*/
public final class PalaceSiege extends CardImpl {
- private final static String ruleTrigger1 = "&bull Khans — At the beginning of your upkeep, return target creature card from your graveyard to your hand.";
- private final static String ruleTrigger2 = "&bull Dragons — At the beginning of your upkeep, each opponent loses 2 life and you gain 2 life.";
+ private static final String ruleTrigger1 = "&bull Khans — At the beginning of your upkeep, return target creature card from your graveyard to your hand.";
+ private static final String ruleTrigger2 = "&bull Dragons — At the beginning of your upkeep, each opponent loses 2 life and you gain 2 life.";
public PalaceSiege(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/PathOfMettle.java b/Mage.Sets/src/mage/cards/p/PathOfMettle.java
index e2a2759b770..1e016aed39e 100644
--- a/Mage.Sets/src/mage/cards/p/PathOfMettle.java
+++ b/Mage.Sets/src/mage/cards/p/PathOfMettle.java
@@ -28,7 +28,7 @@ import mage.game.events.GameEvent;
*/
public final class PathOfMettle extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that doesn't have first strike, double strike, vigilance, or haste");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that doesn't have first strike, double strike, vigilance, or haste");
static {
filter.add(Predicates.not(Predicates.or(
@@ -67,7 +67,7 @@ public final class PathOfMettle extends CardImpl {
class PathOfMettleTriggeredAbility extends TriggeredAbilityImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that doesn't have first strike, double strike, vigilance, or haste");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that doesn't have first strike, double strike, vigilance, or haste");
static {
filter.add(Predicates.or(
diff --git a/Mage.Sets/src/mage/cards/p/PawnOfUlamog.java b/Mage.Sets/src/mage/cards/p/PawnOfUlamog.java
index 7c10dd12713..d9aa4601a38 100644
--- a/Mage.Sets/src/mage/cards/p/PawnOfUlamog.java
+++ b/Mage.Sets/src/mage/cards/p/PawnOfUlamog.java
@@ -73,7 +73,7 @@ class PawnOfUlamogTriggeredAbility extends TriggeredAbilityImpl {
if (card instanceof Permanent && !(card instanceof PermanentToken)) {
Permanent permanent = (Permanent) card;
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD
+ if (zEvent.isDiesEvent()
&& permanent.isControlledBy(this.controllerId)
&& (targetId.equals(this.getSourceId())
|| (permanent.isCreature()
diff --git a/Mage.Sets/src/mage/cards/p/PeaceTalks.java b/Mage.Sets/src/mage/cards/p/PeaceTalks.java
new file mode 100644
index 00000000000..10df1e27cde
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/p/PeaceTalks.java
@@ -0,0 +1,158 @@
+package mage.cards.p;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.ContinuousRuleModifyingEffect;
+import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.RestrictionEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.permanent.Permanent;
+
+/**
+ *
+ * @author jeffwadsworth
+ */
+public final class PeaceTalks extends CardImpl {
+
+ public PeaceTalks(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}");
+
+ // This turn and next turn, creatures can't attack,
+ // and players and permanents can't be the targets
+ // of spells or activated abilities.
+ this.getSpellAbility().addEffect(new PeaceTalksEffect());
+
+ }
+
+ private PeaceTalks(final PeaceTalks card) {
+ super(card);
+ }
+
+ @Override
+ public PeaceTalks copy() {
+ return new PeaceTalks(this);
+ }
+}
+
+class PeaceTalksEffect extends OneShotEffect {
+
+ public PeaceTalksEffect() {
+ super(Outcome.Neutral);
+ this.staticText = "This turn and next turn, creatures can't attack,"
+ + "and players and permanents can't be the targets of spells "
+ + "or activated abilities";
+ }
+
+ public PeaceTalksEffect(final PeaceTalksEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public PeaceTalksEffect copy() {
+ return new PeaceTalksEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ RestrictionEffect effect = new PeaceTalksCantAttackEffect();
+ game.addEffect(effect, source);
+ ContinuousRuleModifyingEffect effect2 = new PeaceTalksPlayersAndPermanentsCantBeTargetsOfSpellsOrActivatedAbilities();
+ game.addEffect(effect2, source);
+ return true;
+ }
+}
+
+class PeaceTalksCantAttackEffect extends RestrictionEffect {
+
+ public PeaceTalksCantAttackEffect() {
+ super(Duration.Custom);
+ staticText = "Creatures can't attack this turn and next turn";
+ }
+
+ public PeaceTalksCantAttackEffect(final PeaceTalksCantAttackEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean applies(Permanent permanent, Ability source, Game game) {
+ return permanent.isCreature();
+ }
+
+ @Override
+ public boolean canAttack(Game game) {
+ return false;
+ }
+
+ @Override
+ public PeaceTalksCantAttackEffect copy() {
+ return new PeaceTalksCantAttackEffect(this);
+ }
+
+ @Override
+ public boolean isInactive(Ability source, Game game) {
+ if (startingTurn + 2 == game.getTurnNum()) {
+ this.discard();
+ return true;
+ }
+ return false;
+ }
+}
+
+class PeaceTalksPlayersAndPermanentsCantBeTargetsOfSpellsOrActivatedAbilities extends ContinuousRuleModifyingEffectImpl {
+
+ public PeaceTalksPlayersAndPermanentsCantBeTargetsOfSpellsOrActivatedAbilities() {
+ super(Duration.Custom, Outcome.Neutral);
+ staticText = "players and permanents can't be the targets of spells or activated abilities";
+ }
+
+ public PeaceTalksPlayersAndPermanentsCantBeTargetsOfSpellsOrActivatedAbilities(final PeaceTalksPlayersAndPermanentsCantBeTargetsOfSpellsOrActivatedAbilities effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean checksEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.CAST_SPELL
+ || event.getType() == GameEvent.EventType.ACTIVATE_ABILITY;
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ for (UUID playerId : game.getPlayer(source.getControllerId()).getInRange()) {
+ if (event.getTargetId().equals(playerId)) {
+ return false;
+ }
+ }
+ for (Permanent permanent : game.getBattlefield().getAllActivePermanents()) {
+ if (event.getTargetId().equals(permanent.getId())) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public PeaceTalksPlayersAndPermanentsCantBeTargetsOfSpellsOrActivatedAbilities copy() {
+ return new PeaceTalksPlayersAndPermanentsCantBeTargetsOfSpellsOrActivatedAbilities(this);
+ }
+
+ @Override
+ public boolean isInactive(Ability source, Game game) {
+ if (startingTurn + 2 == game.getTurnNum()) {
+ this.discard();
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/p/PeopleOfTheWoods.java b/Mage.Sets/src/mage/cards/p/PeopleOfTheWoods.java
index 326d9fde0c9..3987f7b24e2 100644
--- a/Mage.Sets/src/mage/cards/p/PeopleOfTheWoods.java
+++ b/Mage.Sets/src/mage/cards/p/PeopleOfTheWoods.java
@@ -21,7 +21,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public final class PeopleOfTheWoods extends CardImpl {
- final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
+ static final FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
static {
filterLands.add(new SubtypePredicate(SubType.FOREST));
diff --git a/Mage.Sets/src/mage/cards/p/PersonalEnergyShield.java b/Mage.Sets/src/mage/cards/p/PersonalEnergyShield.java
index 9fe269d4162..dc6e98fe6ab 100644
--- a/Mage.Sets/src/mage/cards/p/PersonalEnergyShield.java
+++ b/Mage.Sets/src/mage/cards/p/PersonalEnergyShield.java
@@ -22,7 +22,7 @@ import mage.target.TargetSpell;
*/
public final class PersonalEnergyShield extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("spell that targets you or a permanent you control");
+ private static final FilterSpell filter = new FilterSpell("spell that targets you or a permanent you control");
static {
filter.add(new PersonalEnergyFieldPredicate());
diff --git a/Mage.Sets/src/mage/cards/p/PiasRevolution.java b/Mage.Sets/src/mage/cards/p/PiasRevolution.java
index edaea70c981..8580678631c 100644
--- a/Mage.Sets/src/mage/cards/p/PiasRevolution.java
+++ b/Mage.Sets/src/mage/cards/p/PiasRevolution.java
@@ -118,7 +118,7 @@ class PiasRevolutionTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
if (permanent != null && filter.match(permanent, sourceId, controllerId, game)) {
for (Effect effect : this.getEffects()) {
diff --git a/Mage.Sets/src/mage/cards/p/PitilessPlunderer.java b/Mage.Sets/src/mage/cards/p/PitilessPlunderer.java
index b4667a3b49b..38d5ac492ad 100644
--- a/Mage.Sets/src/mage/cards/p/PitilessPlunderer.java
+++ b/Mage.Sets/src/mage/cards/p/PitilessPlunderer.java
@@ -21,7 +21,7 @@ import mage.game.permanent.token.TreasureToken;
*/
public final class PitilessPlunderer extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/p/PlanarOutburst.java b/Mage.Sets/src/mage/cards/p/PlanarOutburst.java
index fab9b40eb52..0d7bfc485ab 100644
--- a/Mage.Sets/src/mage/cards/p/PlanarOutburst.java
+++ b/Mage.Sets/src/mage/cards/p/PlanarOutburst.java
@@ -17,7 +17,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*/
public final class PlanarOutburst extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("nonland creatures");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonland creatures");
static {
filter.add(Predicates.not(new CardTypePredicate(CardType.LAND)));
diff --git a/Mage.Sets/src/mage/cards/p/PoisonbellyOgre.java b/Mage.Sets/src/mage/cards/p/PoisonbellyOgre.java
index 23b359686f8..111a72772d0 100644
--- a/Mage.Sets/src/mage/cards/p/PoisonbellyOgre.java
+++ b/Mage.Sets/src/mage/cards/p/PoisonbellyOgre.java
@@ -25,7 +25,7 @@ public final class PoisonbellyOgre extends CardImpl {
filter.add(AnotherPredicate.instance);
}
- private final static String RULE = "Whenever another creature enters the battlefield, its controller loses 1 life.";
+ private static final String RULE = "Whenever another creature enters the battlefield, its controller loses 1 life.";
public PoisonbellyOgre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/p/Portcullis.java b/Mage.Sets/src/mage/cards/p/Portcullis.java
index 5a5f9ae6006..1cddb7e13ed 100644
--- a/Mage.Sets/src/mage/cards/p/Portcullis.java
+++ b/Mage.Sets/src/mage/cards/p/Portcullis.java
@@ -34,7 +34,7 @@ import mage.util.CardUtil;
*/
public final class Portcullis extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature");
public Portcullis(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
diff --git a/Mage.Sets/src/mage/cards/p/PrimalForcemage.java b/Mage.Sets/src/mage/cards/p/PrimalForcemage.java
index c1e50b811e9..954fd329c83 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalForcemage.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalForcemage.java
@@ -23,7 +23,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class PrimalForcemage extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/p/PrimalWellspring.java b/Mage.Sets/src/mage/cards/p/PrimalWellspring.java
index 892fbbc636e..4c9667d9e02 100644
--- a/Mage.Sets/src/mage/cards/p/PrimalWellspring.java
+++ b/Mage.Sets/src/mage/cards/p/PrimalWellspring.java
@@ -50,7 +50,7 @@ public final class PrimalWellspring extends CardImpl {
class PyrimalWellspringTriggeredAbility extends TriggeredAbilityImpl {
- private final static FilterInstantOrSorcerySpell filter = new FilterInstantOrSorcerySpell();
+ private static final FilterInstantOrSorcerySpell filter = new FilterInstantOrSorcerySpell();
String abilityOriginalId;
diff --git a/Mage.Sets/src/mage/cards/p/ProwlingNightstalker.java b/Mage.Sets/src/mage/cards/p/ProwlingNightstalker.java
index 19279f4048c..59e6c5ccc4d 100644
--- a/Mage.Sets/src/mage/cards/p/ProwlingNightstalker.java
+++ b/Mage.Sets/src/mage/cards/p/ProwlingNightstalker.java
@@ -21,7 +21,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public final class ProwlingNightstalker extends CardImpl {
- private final static FilterCreaturePermanent notBlackCreatures = new FilterCreaturePermanent("except by black creatures");
+ private static final FilterCreaturePermanent notBlackCreatures = new FilterCreaturePermanent("except by black creatures");
static {
notBlackCreatures.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK)));
diff --git a/Mage.Sets/src/mage/cards/p/Putrefaction.java b/Mage.Sets/src/mage/cards/p/Putrefaction.java
index 30bd43132e2..216072a70cc 100644
--- a/Mage.Sets/src/mage/cards/p/Putrefaction.java
+++ b/Mage.Sets/src/mage/cards/p/Putrefaction.java
@@ -41,13 +41,13 @@ public final class Putrefaction extends CardImpl {
class PutrefactionTriggeredAbility extends SpellCastAllTriggeredAbility {
- private static final FilterSpell filter = new FilterSpell("green or white spell");
+ private static final FilterSpell filterGreenOrWhiteSpell = new FilterSpell("green or white spell");
static {
- filter.add(Predicates.or(new ColorPredicate(ObjectColor.GREEN), new ColorPredicate(ObjectColor.WHITE)));
+ filterGreenOrWhiteSpell.add(Predicates.or(new ColorPredicate(ObjectColor.GREEN), new ColorPredicate(ObjectColor.WHITE)));
}
public PutrefactionTriggeredAbility() {
- super(new DiscardTargetEffect(1), filter, false);
+ super(new DiscardTargetEffect(1), filterGreenOrWhiteSpell, false);
}
public PutrefactionTriggeredAbility(PutrefactionTriggeredAbility ability) {
@@ -58,7 +58,7 @@ class PutrefactionTriggeredAbility extends SpellCastAllTriggeredAbility {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && filter.match(spell, getSourceId(), getControllerId(), game)) {
+ if (spell != null && filterGreenOrWhiteSpell.match(spell, getSourceId(), getControllerId(), game)) {
this.getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId()));
return true;
}
diff --git a/Mage.Sets/src/mage/cards/p/PyromancersGoggles.java b/Mage.Sets/src/mage/cards/p/PyromancersGoggles.java
index b26aed2ddde..f6f2ec08a5d 100644
--- a/Mage.Sets/src/mage/cards/p/PyromancersGoggles.java
+++ b/Mage.Sets/src/mage/cards/p/PyromancersGoggles.java
@@ -54,7 +54,7 @@ public final class PyromancersGoggles extends CardImpl {
class PyromancersGogglesTriggeredAbility extends TriggeredAbilityImpl {
- private final static FilterInstantOrSorcerySpell filter = new FilterInstantOrSorcerySpell();
+ private static final FilterInstantOrSorcerySpell filter = new FilterInstantOrSorcerySpell();
static {
filter.add(new ColorPredicate(ObjectColor.RED));
diff --git a/Mage.Sets/src/mage/cards/r/RadiantDestiny.java b/Mage.Sets/src/mage/cards/r/RadiantDestiny.java
index acfbcefe7b9..b0b9bee0316 100644
--- a/Mage.Sets/src/mage/cards/r/RadiantDestiny.java
+++ b/Mage.Sets/src/mage/cards/r/RadiantDestiny.java
@@ -27,7 +27,7 @@ import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES_CONTROLLED;
*/
public final class RadiantDestiny extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control of the chosen type");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control of the chosen type");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/r/RagingSwordtooth.java b/Mage.Sets/src/mage/cards/r/RagingSwordtooth.java
index 5856a612a88..1363ae5ba06 100644
--- a/Mage.Sets/src/mage/cards/r/RagingSwordtooth.java
+++ b/Mage.Sets/src/mage/cards/r/RagingSwordtooth.java
@@ -19,7 +19,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*/
public final class RagingSwordtooth extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("other creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creature");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/r/RalsDispersal.java b/Mage.Sets/src/mage/cards/r/RalsDispersal.java
index 4747d592aa0..224d594843b 100644
--- a/Mage.Sets/src/mage/cards/r/RalsDispersal.java
+++ b/Mage.Sets/src/mage/cards/r/RalsDispersal.java
@@ -16,7 +16,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class RalsDispersal extends CardImpl {
- private final static FilterCard filter = new FilterCard("Ral, Caller of Storms");
+ private static final FilterCard filter = new FilterCard("Ral, Caller of Storms");
static {
filter.add(new NamePredicate("Ral, Caller of Storms"));
diff --git a/Mage.Sets/src/mage/cards/r/RamunapHydra.java b/Mage.Sets/src/mage/cards/r/RamunapHydra.java
index 7e74d67d64c..38a86af7688 100644
--- a/Mage.Sets/src/mage/cards/r/RamunapHydra.java
+++ b/Mage.Sets/src/mage/cards/r/RamunapHydra.java
@@ -68,7 +68,7 @@ public final class RamunapHydra extends CardImpl {
class RamunapHydraBoostEffect extends WhileConditionContinuousEffect {
- private final static FilterCard filter = new FilterCard("a Desert");
+ private static final FilterCard filter = new FilterCard("a Desert");
static {
filter.add(new SubtypePredicate(SubType.DESERT));
diff --git a/Mage.Sets/src/mage/cards/r/RebuffTheWicked.java b/Mage.Sets/src/mage/cards/r/RebuffTheWicked.java
index d5ecd01df48..e60d29822b0 100644
--- a/Mage.Sets/src/mage/cards/r/RebuffTheWicked.java
+++ b/Mage.Sets/src/mage/cards/r/RebuffTheWicked.java
@@ -17,7 +17,7 @@ import mage.target.TargetSpell;
*/
public final class RebuffTheWicked extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("spell that targets a permanent you control");
+ private static final FilterSpell filter = new FilterSpell("spell that targets a permanent you control");
static {
filter.add(new TargetsPermanentPredicate(new FilterControlledPermanent()));
diff --git a/Mage.Sets/src/mage/cards/r/RecklessBushwhacker.java b/Mage.Sets/src/mage/cards/r/RecklessBushwhacker.java
index d19cf75607c..c35a7128698 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessBushwhacker.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessBushwhacker.java
@@ -24,7 +24,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*/
public final class RecklessBushwhacker extends CardImpl {
- private final static FilterControlledCreaturePermanent FILTER = new FilterControlledCreaturePermanent("other creatures you control");
+ private static final FilterControlledCreaturePermanent FILTER = new FilterControlledCreaturePermanent("other creatures you control");
static {
FILTER.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/r/RecklessCohort.java b/Mage.Sets/src/mage/cards/r/RecklessCohort.java
index 4962f5b3ce8..a4f00f9e922 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessCohort.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessCohort.java
@@ -21,7 +21,7 @@ import mage.filter.predicate.permanent.AnotherPredicate;
*/
public final class RecklessCohort extends CardImpl {
- private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Ally");
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Ally");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/r/ReflectorMage.java b/Mage.Sets/src/mage/cards/r/ReflectorMage.java
index a7a087b19e2..51ebede343e 100644
--- a/Mage.Sets/src/mage/cards/r/ReflectorMage.java
+++ b/Mage.Sets/src/mage/cards/r/ReflectorMage.java
@@ -27,7 +27,7 @@ import java.util.UUID;
*/
public final class ReflectorMage extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/r/Reincarnation.java b/Mage.Sets/src/mage/cards/r/Reincarnation.java
index a44d5b3b98e..470183dfa44 100644
--- a/Mage.Sets/src/mage/cards/r/Reincarnation.java
+++ b/Mage.Sets/src/mage/cards/r/Reincarnation.java
@@ -95,7 +95,7 @@ class ReincarnationDelayedTriggeredAbility extends DelayedTriggeredAbility {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getTargetId().equals(target)) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/r/RemorselessPunishment.java b/Mage.Sets/src/mage/cards/r/RemorselessPunishment.java
index 3bfd103007b..56387c62954 100644
--- a/Mage.Sets/src/mage/cards/r/RemorselessPunishment.java
+++ b/Mage.Sets/src/mage/cards/r/RemorselessPunishment.java
@@ -43,7 +43,7 @@ public final class RemorselessPunishment extends CardImpl {
class RemorselessPunishmentEffect extends OneShotEffect {
- private final static FilterControlledPermanent filter = new FilterControlledPermanent("creature or planeswalker");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("creature or planeswalker");
static {
filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), new CardTypePredicate(CardType.PLANESWALKER)));
diff --git a/Mage.Sets/src/mage/cards/r/RhythmicWaterVortex.java b/Mage.Sets/src/mage/cards/r/RhythmicWaterVortex.java
index 01f4b225acf..412162b3f40 100644
--- a/Mage.Sets/src/mage/cards/r/RhythmicWaterVortex.java
+++ b/Mage.Sets/src/mage/cards/r/RhythmicWaterVortex.java
@@ -16,7 +16,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class RhythmicWaterVortex extends CardImpl {
- private final static FilterCard filter = new FilterCard("Mu Yanling");
+ private static final FilterCard filter = new FilterCard("Mu Yanling");
static {
filter.add(new NamePredicate("Mu Yanling"));
diff --git a/Mage.Sets/src/mage/cards/r/RingOfImmortals.java b/Mage.Sets/src/mage/cards/r/RingOfImmortals.java
index 3d61da68c22..bca0f2387d0 100644
--- a/Mage.Sets/src/mage/cards/r/RingOfImmortals.java
+++ b/Mage.Sets/src/mage/cards/r/RingOfImmortals.java
@@ -26,7 +26,7 @@ import mage.target.TargetSpell;
*/
public final class RingOfImmortals extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("instant or Aura spell that targets a permanent you control");
+ private static final FilterSpell filter = new FilterSpell("instant or Aura spell that targets a permanent you control");
static {
filter.add(Predicates.or(new CardTypePredicate(CardType.INSTANT), new SubtypePredicate(SubType.AURA)));
diff --git a/Mage.Sets/src/mage/cards/r/RiptideLaboratory.java b/Mage.Sets/src/mage/cards/r/RiptideLaboratory.java
index dc0eeae9843..049835c8ed8 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideLaboratory.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideLaboratory.java
@@ -23,7 +23,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class RiptideLaboratory extends CardImpl {
- private final static FilterControlledPermanent filter = new FilterControlledPermanent("Wizard you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("Wizard you control");
static {
filter.add(new SubtypePredicate(SubType.WIZARD));
diff --git a/Mage.Sets/src/mage/cards/r/RivalsDuel.java b/Mage.Sets/src/mage/cards/r/RivalsDuel.java
index a342736f022..08d8be7d6ec 100644
--- a/Mage.Sets/src/mage/cards/r/RivalsDuel.java
+++ b/Mage.Sets/src/mage/cards/r/RivalsDuel.java
@@ -1,4 +1,3 @@
-
package mage.cards.r;
import java.util.UUID;
@@ -51,8 +50,16 @@ class RivalsDuelFightTargetsEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- Permanent creature1 = game.getPermanent(source.getFirstTarget());
- Permanent creature2 = game.getPermanent(source.getTargets().get(0).getTargets().get(1));
+ Permanent creature1 = null;
+ Permanent creature2 = null;
+ for (UUID targetId : getTargetPointer().getTargets(game, source)) {
+ if (creature1 == null) {
+ creature1 = game.getPermanent(targetId);
+ } else {
+ creature2 = game.getPermanent(targetId);
+ }
+ }
+
// 20110930 - 701.10
if (creature1 != null
&& creature2 != null) {
diff --git a/Mage.Sets/src/mage/cards/r/RoilingWaters.java b/Mage.Sets/src/mage/cards/r/RoilingWaters.java
index e0ba7dd30b9..a6d1d69d836 100644
--- a/Mage.Sets/src/mage/cards/r/RoilingWaters.java
+++ b/Mage.Sets/src/mage/cards/r/RoilingWaters.java
@@ -21,7 +21,7 @@ import mage.target.targetpointer.SecondTargetPointer;
*/
public final class RoilingWaters extends CardImpl {
- private final static FilterCreaturePermanent FILTER = new FilterCreaturePermanent("creatures your opponents control");
+ private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("creatures your opponents control");
static {
FILTER.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/r/RoilmagesTrick.java b/Mage.Sets/src/mage/cards/r/RoilmagesTrick.java
index b4af39f406a..496d1bd6a7b 100644
--- a/Mage.Sets/src/mage/cards/r/RoilmagesTrick.java
+++ b/Mage.Sets/src/mage/cards/r/RoilmagesTrick.java
@@ -22,7 +22,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class RoilmagesTrick extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures your opponents control");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/r/RootsOfLife.java b/Mage.Sets/src/mage/cards/r/RootsOfLife.java
index 419f1d62352..c3f2cba6d69 100644
--- a/Mage.Sets/src/mage/cards/r/RootsOfLife.java
+++ b/Mage.Sets/src/mage/cards/r/RootsOfLife.java
@@ -22,8 +22,8 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class RootsOfLife extends CardImpl {
- private final static String ruleTrigger1 = "&bull Island — Whenever an Island an opponent controls becomes tapped, you gain 1 life";
- private final static String ruleTrigger2 = "&bull Swamp — Whenever a Swamp an opponent controls becomes tapped, you gain 1 life";
+ private static final String ruleTrigger1 = "&bull Island — Whenever an Island an opponent controls becomes tapped, you gain 1 life";
+ private static final String ruleTrigger2 = "&bull Swamp — Whenever a Swamp an opponent controls becomes tapped, you gain 1 life";
private static final FilterPermanent islandFilter = new FilterPermanent("an Island an opponent controls");
private static final FilterPermanent swampFilter = new FilterPermanent("a Swamp an opponent controls");
diff --git a/Mage.Sets/src/mage/cards/r/RotShambler.java b/Mage.Sets/src/mage/cards/r/RotShambler.java
index 8358cd49b08..1230e092c33 100644
--- a/Mage.Sets/src/mage/cards/r/RotShambler.java
+++ b/Mage.Sets/src/mage/cards/r/RotShambler.java
@@ -21,7 +21,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class RotShambler extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/r/RuinInTheirWake.java b/Mage.Sets/src/mage/cards/r/RuinInTheirWake.java
index 0d574c796ae..a4e9705c67f 100644
--- a/Mage.Sets/src/mage/cards/r/RuinInTheirWake.java
+++ b/Mage.Sets/src/mage/cards/r/RuinInTheirWake.java
@@ -45,7 +45,7 @@ public final class RuinInTheirWake extends CardImpl {
class RuinInTheirWakeEffect extends OneShotEffect {
- private final static FilterLandPermanent filterWastes = new FilterLandPermanent();
+ private static final FilterLandPermanent filterWastes = new FilterLandPermanent();
static {
filterWastes.add(new NamePredicate("Wastes"));
diff --git a/Mage.Sets/src/mage/cards/r/RuinsOfOranRief.java b/Mage.Sets/src/mage/cards/r/RuinsOfOranRief.java
index b43ee672514..47d2869fdc0 100644
--- a/Mage.Sets/src/mage/cards/r/RuinsOfOranRief.java
+++ b/Mage.Sets/src/mage/cards/r/RuinsOfOranRief.java
@@ -24,7 +24,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class RuinsOfOranRief extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("colorless creature that entered the battlefield this turn");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("colorless creature that entered the battlefield this turn");
static {
filter.add(ColorlessPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/r/Rust.java b/Mage.Sets/src/mage/cards/r/Rust.java
index 1e88687beb4..9557ecb1edd 100644
--- a/Mage.Sets/src/mage/cards/r/Rust.java
+++ b/Mage.Sets/src/mage/cards/r/Rust.java
@@ -17,7 +17,7 @@ import mage.target.common.TargetActivatedAbility;
*/
public final class Rust extends CardImpl {
- private final static FilterStackObject filter = new FilterStackObject("activated ability from an artifact source");
+ private static final FilterStackObject filter = new FilterStackObject("activated ability from an artifact source");
static {
filter.add(new ArtifactSourcePredicate());
diff --git a/Mage.Sets/src/mage/cards/r/RuthlessRipper.java b/Mage.Sets/src/mage/cards/r/RuthlessRipper.java
index d58fb8cc922..936b2a7f521 100644
--- a/Mage.Sets/src/mage/cards/r/RuthlessRipper.java
+++ b/Mage.Sets/src/mage/cards/r/RuthlessRipper.java
@@ -26,7 +26,7 @@ import mage.target.common.TargetCardInHand;
*/
public final class RuthlessRipper extends CardImpl {
- private final static FilterCard filter = new FilterCard("a black card in your hand");
+ private static final FilterCard filter = new FilterCard("a black card in your hand");
static {
filter.add(new ColorPredicate(ObjectColor.BLACK));
}
diff --git a/Mage.Sets/src/mage/cards/s/SaddlebackLagac.java b/Mage.Sets/src/mage/cards/s/SaddlebackLagac.java
index 70c1b8ab3e2..715fe21771d 100644
--- a/Mage.Sets/src/mage/cards/s/SaddlebackLagac.java
+++ b/Mage.Sets/src/mage/cards/s/SaddlebackLagac.java
@@ -20,7 +20,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class SaddlebackLagac extends CardImpl {
- private final static FilterCreaturePermanent FILTER = new FilterCreaturePermanent("target creatures");
+ private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("target creatures");
static {
FILTER.add(AnotherPredicate.instance);
@@ -39,7 +39,7 @@ public final class SaddlebackLagac extends CardImpl {
}
- public SaddlebackLagac(final SaddlebackLagac card) {
+ private SaddlebackLagac(final SaddlebackLagac card) {
super(card);
}
diff --git a/Mage.Sets/src/mage/cards/s/SaiTok.java b/Mage.Sets/src/mage/cards/s/SaiTok.java
index 04d1f9daa49..2fea4bab8d8 100644
--- a/Mage.Sets/src/mage/cards/s/SaiTok.java
+++ b/Mage.Sets/src/mage/cards/s/SaiTok.java
@@ -11,7 +11,6 @@ import mage.filter.FilterPermanent;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
import mage.target.TargetPermanent;
-import mage.target.common.TargetCreatureOrPlaneswalker;
/**
*
@@ -36,7 +35,7 @@ public final class SaiTok extends CardImpl {
this.getSpellAbility().addTarget(new TargetPermanent(filter));
}
- public SaiTok(final SaiTok card) {
+ private SaiTok(final SaiTok card) {
super(card);
}
diff --git a/Mage.Sets/src/mage/cards/s/Sailmonger.java b/Mage.Sets/src/mage/cards/s/Sailmonger.java
index 738b1ecf8a7..ec6d781bac8 100644
--- a/Mage.Sets/src/mage/cards/s/Sailmonger.java
+++ b/Mage.Sets/src/mage/cards/s/Sailmonger.java
@@ -3,7 +3,6 @@ package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
-import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.InfoEffect;
diff --git a/Mage.Sets/src/mage/cards/s/Saltblast.java b/Mage.Sets/src/mage/cards/s/Saltblast.java
index 66945dea2fa..a17a04cf6b9 100644
--- a/Mage.Sets/src/mage/cards/s/Saltblast.java
+++ b/Mage.Sets/src/mage/cards/s/Saltblast.java
@@ -1,7 +1,6 @@
package mage.cards.s;
-import java.util.UUID;
import mage.ObjectColor;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
@@ -12,18 +11,21 @@ import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.target.TargetPermanent;
+import java.util.UUID;
+
/**
- *
* @author LevelX2
*/
public final class Saltblast extends CardImpl {
- static final protected FilterPermanent filter = new FilterPermanent("nonwhite permanent");
+ private static final FilterPermanent filter = new FilterPermanent("nonwhite permanent");
+
static {
filter.add(Predicates.not(new ColorPredicate(ObjectColor.WHITE)));
}
+
public Saltblast(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}");
// Destroy target nonwhite permanent.
diff --git a/Mage.Sets/src/mage/cards/s/Scapeshift.java b/Mage.Sets/src/mage/cards/s/Scapeshift.java
index 7cf2a9cee6d..473044dfbd2 100644
--- a/Mage.Sets/src/mage/cards/s/Scapeshift.java
+++ b/Mage.Sets/src/mage/cards/s/Scapeshift.java
@@ -66,8 +66,8 @@ class ScapeshiftEffect extends OneShotEffect {
int amount = 0;
TargetControlledPermanent sacrificeLand = new TargetControlledPermanent(0, Integer.MAX_VALUE, new FilterControlledLandPermanent("lands you control"), true);
if (controller.chooseTarget(Outcome.Sacrifice, sacrificeLand, source, game)) {
- for (Object uuid : sacrificeLand.getTargets()) {
- Permanent land = game.getPermanent((UUID) uuid);
+ for (UUID uuid : sacrificeLand.getTargets()) {
+ Permanent land = game.getPermanent(uuid);
if (land != null) {
land.sacrifice(source.getSourceId(), game);
amount++;
diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfValkas.java b/Mage.Sets/src/mage/cards/s/ScourgeOfValkas.java
index 2e3a2d02773..d762ba2de59 100644
--- a/Mage.Sets/src/mage/cards/s/ScourgeOfValkas.java
+++ b/Mage.Sets/src/mage/cards/s/ScourgeOfValkas.java
@@ -31,7 +31,7 @@ import mage.target.common.TargetAnyTarget;
*/
public final class ScourgeOfValkas extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("{this} or another Dragon");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("{this} or another Dragon");
static {
filter.add(new SubtypePredicate(SubType.DRAGON));
diff --git a/Mage.Sets/src/mage/cards/s/Scrapheap.java b/Mage.Sets/src/mage/cards/s/Scrapheap.java
index b57e7f95e6f..78385f1a2fa 100644
--- a/Mage.Sets/src/mage/cards/s/Scrapheap.java
+++ b/Mage.Sets/src/mage/cards/s/Scrapheap.java
@@ -62,7 +62,7 @@ class ScrapheapTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
if (permanent != null && permanent.isOwnedBy(this.getControllerId())) {
if (StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT.match(permanent, sourceId, controllerId, game)) {
diff --git a/Mage.Sets/src/mage/cards/s/ScreechingSliver.java b/Mage.Sets/src/mage/cards/s/ScreechingSliver.java
index afff09d73a9..908ef9eda5e 100644
--- a/Mage.Sets/src/mage/cards/s/ScreechingSliver.java
+++ b/Mage.Sets/src/mage/cards/s/ScreechingSliver.java
@@ -23,7 +23,7 @@ import mage.target.TargetPlayer;
*/
public final class ScreechingSliver extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers");
+ private static final FilterPermanent allSliversFilter = new FilterPermanent(SubType.SLIVER, "All Slivers");
public ScreechingSliver(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
@@ -37,7 +37,7 @@ public final class ScreechingSliver extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new GainAbilityAllEffect(ability, Duration.WhileOnBattlefield,
- filter, "All Slivers have \"{T}: Target player puts the top card of their library into their graveyard.\"")));
+ allSliversFilter, "All Slivers have \"{T}: Target player puts the top card of their library into their graveyard.\"")));
}
public ScreechingSliver(final ScreechingSliver card) {
diff --git a/Mage.Sets/src/mage/cards/s/SealAway.java b/Mage.Sets/src/mage/cards/s/SealAway.java
index 4550db53198..9ad8ab7f25a 100644
--- a/Mage.Sets/src/mage/cards/s/SealAway.java
+++ b/Mage.Sets/src/mage/cards/s/SealAway.java
@@ -24,7 +24,7 @@ import mage.target.TargetPermanent;
*/
public final class SealAway extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/s/SearingBlood.java b/Mage.Sets/src/mage/cards/s/SearingBlood.java
index e6a483074f2..2adff7cba2c 100644
--- a/Mage.Sets/src/mage/cards/s/SearingBlood.java
+++ b/Mage.Sets/src/mage/cards/s/SearingBlood.java
@@ -93,7 +93,7 @@ class SearingBloodDelayedTriggeredAbility extends DelayedTriggeredAbility {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getTargetId().equals(target)) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/s/Seedtime.java b/Mage.Sets/src/mage/cards/s/Seedtime.java
index 1fe0480be89..efa5e33ce82 100644
--- a/Mage.Sets/src/mage/cards/s/Seedtime.java
+++ b/Mage.Sets/src/mage/cards/s/Seedtime.java
@@ -22,8 +22,8 @@ import mage.watchers.common.SpellsCastWatcher;
*/
public final class Seedtime extends CardImpl {
- private final static String rule = "Cast this spell only during your turn.";
- private final static String rule2 = "Take an extra turn after this one if an opponent cast a blue spell this turn.";
+ private static final String rule = "Cast this spell only during your turn.";
+ private static final String rule2 = "Take an extra turn after this one if an opponent cast a blue spell this turn.";
public Seedtime(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SentinelOfThePearlTrident.java b/Mage.Sets/src/mage/cards/s/SentinelOfThePearlTrident.java
index 93db168b201..97a6036248a 100644
--- a/Mage.Sets/src/mage/cards/s/SentinelOfThePearlTrident.java
+++ b/Mage.Sets/src/mage/cards/s/SentinelOfThePearlTrident.java
@@ -30,7 +30,7 @@ import mage.target.targetpointer.FixedTarget;
*/
public final class SentinelOfThePearlTrident extends CardImpl {
- private final static FilterControlledPermanent filter = new FilterControlledPermanent("historic permanent you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("historic permanent you control");
static {
filter.add(HistoricPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/s/SerraInquisitors.java b/Mage.Sets/src/mage/cards/s/SerraInquisitors.java
index dacf3b265cd..afb01197666 100644
--- a/Mage.Sets/src/mage/cards/s/SerraInquisitors.java
+++ b/Mage.Sets/src/mage/cards/s/SerraInquisitors.java
@@ -20,7 +20,7 @@ import java.util.UUID;
*/
public final class SerraInquisitors extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("black creatures");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creatures");
static {
filter.add(new ColorPredicate(ObjectColor.BLACK));
diff --git a/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java b/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java
index 8c4af9f18d7..41fc8d67f03 100644
--- a/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java
+++ b/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java
@@ -24,7 +24,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class SetonKrosanProtector extends CardImpl {
- private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Druid you control");
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Druid you control");
static {
filter.add(Predicates.not(TappedPredicate.instance));
diff --git a/Mage.Sets/src/mage/cards/s/ShaakHerd.java b/Mage.Sets/src/mage/cards/s/ShaakHerd.java
index f4405e96216..96f3933057f 100644
--- a/Mage.Sets/src/mage/cards/s/ShaakHerd.java
+++ b/Mage.Sets/src/mage/cards/s/ShaakHerd.java
@@ -20,7 +20,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*/
public final class ShaakHerd extends CardImpl {
- private final static FilterCard filter = new FilterCard("another target creature card");
+ private static final FilterCard filter = new FilterCard("another target creature card");
static {
filter.add(new AnotherCardPredicate());
diff --git a/Mage.Sets/src/mage/cards/s/SheerDrop.java b/Mage.Sets/src/mage/cards/s/SheerDrop.java
index de325c267f2..2e4abc4c43f 100644
--- a/Mage.Sets/src/mage/cards/s/SheerDrop.java
+++ b/Mage.Sets/src/mage/cards/s/SheerDrop.java
@@ -17,7 +17,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class SheerDrop extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
static {
filter.add(TappedPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/s/ShredsOfSanity.java b/Mage.Sets/src/mage/cards/s/ShredsOfSanity.java
index 00536e942ec..172af9fbd32 100644
--- a/Mage.Sets/src/mage/cards/s/ShredsOfSanity.java
+++ b/Mage.Sets/src/mage/cards/s/ShredsOfSanity.java
@@ -25,8 +25,8 @@ import mage.target.TargetCard;
*/
public final class ShredsOfSanity extends CardImpl {
- private final static FilterCard filterInstant = new FilterCard("an instant card in your graveyard");
- private final static FilterCard filterSorcery = new FilterCard("a sorcery card in your graveyard");
+ private static final FilterCard filterInstant = new FilterCard("an instant card in your graveyard");
+ private static final FilterCard filterSorcery = new FilterCard("a sorcery card in your graveyard");
static {
filterInstant.add(new CardTypePredicate(CardType.INSTANT));
diff --git a/Mage.Sets/src/mage/cards/s/ShrivelingRot.java b/Mage.Sets/src/mage/cards/s/ShrivelingRot.java
index 1457f6c36b2..dfe775bf0e7 100644
--- a/Mage.Sets/src/mage/cards/s/ShrivelingRot.java
+++ b/Mage.Sets/src/mage/cards/s/ShrivelingRot.java
@@ -111,7 +111,7 @@ class ShrivelingRotLoseLifeTriggeredAbility extends DelayedTriggeredAbility {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
if (zEvent.getTarget().isCreature()) {
Effect effect = this.getEffects().get(0);
effect.setTargetPointer(new FixedTarget(event.getTargetId()));
diff --git a/Mage.Sets/src/mage/cards/s/SigardasAid.java b/Mage.Sets/src/mage/cards/s/SigardasAid.java
index d2be5aacd4e..8b7a18df427 100644
--- a/Mage.Sets/src/mage/cards/s/SigardasAid.java
+++ b/Mage.Sets/src/mage/cards/s/SigardasAid.java
@@ -25,7 +25,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class SigardasAid extends CardImpl {
- private final static FilterArtifactPermanent filter = new FilterArtifactPermanent("an Equipment");
+ private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("an Equipment");
private static final FilterCard filterCard = new FilterCard("Aura and Equipment spells");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SignalPest.java b/Mage.Sets/src/mage/cards/s/SignalPest.java
index ea2b26fdec4..dab7642273c 100644
--- a/Mage.Sets/src/mage/cards/s/SignalPest.java
+++ b/Mage.Sets/src/mage/cards/s/SignalPest.java
@@ -23,7 +23,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*/
public final class SignalPest extends CardImpl {
- private final static FilterCreaturePermanent notFlyingorReachCreatures = new FilterCreaturePermanent("except by creatures with flying or reach");
+ private static final FilterCreaturePermanent notFlyingorReachCreatures = new FilterCreaturePermanent("except by creatures with flying or reach");
static {
notFlyingorReachCreatures.add(Predicates.not(
diff --git a/Mage.Sets/src/mage/cards/s/SnakePit.java b/Mage.Sets/src/mage/cards/s/SnakePit.java
index b2d173c76bd..a7a108f0241 100644
--- a/Mage.Sets/src/mage/cards/s/SnakePit.java
+++ b/Mage.Sets/src/mage/cards/s/SnakePit.java
@@ -19,7 +19,7 @@ import mage.game.permanent.token.SnakeToken;
*/
public final class SnakePit extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("a blue or black spell");
+ private static final FilterSpell filter = new FilterSpell("a blue or black spell");
static {
filter.add(Predicates.or(new ColorPredicate(ObjectColor.BLUE), new ColorPredicate(ObjectColor.BLACK)));
diff --git a/Mage.Sets/src/mage/cards/s/SomberwaldAlpha.java b/Mage.Sets/src/mage/cards/s/SomberwaldAlpha.java
index da9c48a8d0c..00bc7f78f48 100644
--- a/Mage.Sets/src/mage/cards/s/SomberwaldAlpha.java
+++ b/Mage.Sets/src/mage/cards/s/SomberwaldAlpha.java
@@ -28,7 +28,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class SomberwaldAlpha extends CardImpl {
- final static private FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
+ static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/s/SoultetherGolem.java b/Mage.Sets/src/mage/cards/s/SoultetherGolem.java
index 73d60c1aab6..3c449c87704 100644
--- a/Mage.Sets/src/mage/cards/s/SoultetherGolem.java
+++ b/Mage.Sets/src/mage/cards/s/SoultetherGolem.java
@@ -26,7 +26,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class SoultetherGolem extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/s/SpellQueller.java b/Mage.Sets/src/mage/cards/s/SpellQueller.java
index c4a1fb4c422..4077e32f870 100644
--- a/Mage.Sets/src/mage/cards/s/SpellQueller.java
+++ b/Mage.Sets/src/mage/cards/s/SpellQueller.java
@@ -37,7 +37,7 @@ import org.apache.log4j.Logger;
*/
public final class SpellQueller extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("spell with converted mana cost 4 or less");
+ private static final FilterSpell filter = new FilterSpell("spell with converted mana cost 4 or less");
static {
filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 5));
diff --git a/Mage.Sets/src/mage/cards/s/Sporogenesis.java b/Mage.Sets/src/mage/cards/s/Sporogenesis.java
index 3512d42361e..0d405c66b2a 100644
--- a/Mage.Sets/src/mage/cards/s/Sporogenesis.java
+++ b/Mage.Sets/src/mage/cards/s/Sporogenesis.java
@@ -90,7 +90,7 @@ class SporogenesisTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
Permanent permanent = game.getPermanentOrLKIBattlefield(zEvent.getTargetId());
if (permanent != null
&& permanent.isCreature()
diff --git a/Mage.Sets/src/mage/cards/s/StasisSnare.java b/Mage.Sets/src/mage/cards/s/StasisSnare.java
index 7dac21eb62f..fe7447f46cb 100644
--- a/Mage.Sets/src/mage/cards/s/StasisSnare.java
+++ b/Mage.Sets/src/mage/cards/s/StasisSnare.java
@@ -22,7 +22,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class StasisSnare extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/s/StensiaInnkeeper.java b/Mage.Sets/src/mage/cards/s/StensiaInnkeeper.java
index dd254e1a64a..f6c5033a8ed 100644
--- a/Mage.Sets/src/mage/cards/s/StensiaInnkeeper.java
+++ b/Mage.Sets/src/mage/cards/s/StensiaInnkeeper.java
@@ -22,7 +22,7 @@ import mage.target.TargetPermanent;
*/
public final class StensiaInnkeeper extends CardImpl {
- private final static FilterLandPermanent filter = new FilterLandPermanent("land an opponent controls");
+ private static final FilterLandPermanent filter = new FilterLandPermanent("land an opponent controls");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/s/SubterraneanShambler.java b/Mage.Sets/src/mage/cards/s/SubterraneanShambler.java
index 29004308bd3..37166d93da9 100644
--- a/Mage.Sets/src/mage/cards/s/SubterraneanShambler.java
+++ b/Mage.Sets/src/mage/cards/s/SubterraneanShambler.java
@@ -21,7 +21,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*/
public final class SubterraneanShambler extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying");
static {
filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class)));
diff --git a/Mage.Sets/src/mage/cards/s/SunBlessedMount.java b/Mage.Sets/src/mage/cards/s/SunBlessedMount.java
index 2e94ae4ef0a..0a8b7f4f888 100644
--- a/Mage.Sets/src/mage/cards/s/SunBlessedMount.java
+++ b/Mage.Sets/src/mage/cards/s/SunBlessedMount.java
@@ -18,7 +18,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*/
public final class SunBlessedMount extends CardImpl {
- private final static FilterCard filter = new FilterCard("Huatli, Dinosaur Knight");
+ private static final FilterCard filter = new FilterCard("Huatli, Dinosaur Knight");
static {
filter.add(new NamePredicate("Huatli, Dinosaur Knight"));
diff --git a/Mage.Sets/src/mage/cards/s/SuspensionField.java b/Mage.Sets/src/mage/cards/s/SuspensionField.java
index e7a8c8e5ce8..77cc6b30afd 100644
--- a/Mage.Sets/src/mage/cards/s/SuspensionField.java
+++ b/Mage.Sets/src/mage/cards/s/SuspensionField.java
@@ -26,7 +26,7 @@ import mage.util.CardUtil;
*/
public final class SuspensionField extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with toughness 3 or greater");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with toughness 3 or greater");
static {
filter.add(new ToughnessPredicate(ComparisonType.MORE_THAN, 2));
diff --git a/Mage.Sets/src/mage/cards/s/SwiftReckoning.java b/Mage.Sets/src/mage/cards/s/SwiftReckoning.java
index 3d252b1d339..c0b12aa4844 100644
--- a/Mage.Sets/src/mage/cards/s/SwiftReckoning.java
+++ b/Mage.Sets/src/mage/cards/s/SwiftReckoning.java
@@ -23,7 +23,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class SwiftReckoning extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
static {
filter.add(TappedPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java b/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java
index 1df9e2de403..17039e4b9c5 100644
--- a/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java
+++ b/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java
@@ -41,7 +41,7 @@ import mage.constants.SuperType;
*/
public final class TamiyoFieldResearcher extends CardImpl {
- private final static FilterPermanent filter = new FilterPermanent("nonland permanent");
+ private static final FilterPermanent filter = new FilterPermanent("nonland permanent");
static {
filter.add(Predicates.not(new CardTypePredicate(CardType.LAND)));
diff --git a/Mage.Sets/src/mage/cards/t/TawnosUrzasApprentice.java b/Mage.Sets/src/mage/cards/t/TawnosUrzasApprentice.java
index e4db5140e72..7d3c450c2b1 100644
--- a/Mage.Sets/src/mage/cards/t/TawnosUrzasApprentice.java
+++ b/Mage.Sets/src/mage/cards/t/TawnosUrzasApprentice.java
@@ -31,7 +31,7 @@ import mage.target.common.TargetActivatedOrTriggeredAbility;
*/
public final class TawnosUrzasApprentice extends CardImpl {
- private final static FilterStackObject filter = new FilterStackObject("activated or triggered ability you control from an artifact source");
+ private static final FilterStackObject filter = new FilterStackObject("activated or triggered ability you control from an artifact source");
static {
filter.add(new ArtifactSourcePredicate());
diff --git a/Mage.Sets/src/mage/cards/t/TeferisResponse.java b/Mage.Sets/src/mage/cards/t/TeferisResponse.java
index 02d0f25d556..7c9ad386bac 100644
--- a/Mage.Sets/src/mage/cards/t/TeferisResponse.java
+++ b/Mage.Sets/src/mage/cards/t/TeferisResponse.java
@@ -23,7 +23,7 @@ import mage.target.TargetStackObject;
*/
public final class TeferisResponse extends CardImpl {
- private final static FilterStackObject filter = new FilterStackObject("spell or ability an opponent controls that targets a land you control");
+ private static final FilterStackObject filter = new FilterStackObject("spell or ability an opponent controls that targets a land you control");
static {
filter.add(new TargetsPermanentPredicate(new FilterControlledLandPermanent()));
diff --git a/Mage.Sets/src/mage/cards/t/TelJiladStylus.java b/Mage.Sets/src/mage/cards/t/TelJiladStylus.java
index 886fa089ec8..5b252c5b960 100644
--- a/Mage.Sets/src/mage/cards/t/TelJiladStylus.java
+++ b/Mage.Sets/src/mage/cards/t/TelJiladStylus.java
@@ -22,7 +22,7 @@ import mage.target.TargetPermanent;
*/
public final class TelJiladStylus extends CardImpl {
- private final static FilterPermanent filter = new FilterPermanent();
+ private static final FilterPermanent filter = new FilterPermanent();
static {
filter.add(new OwnerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/t/TelJiladWolf.java b/Mage.Sets/src/mage/cards/t/TelJiladWolf.java
index 77a3482fb52..92ea7f3f7ef 100644
--- a/Mage.Sets/src/mage/cards/t/TelJiladWolf.java
+++ b/Mage.Sets/src/mage/cards/t/TelJiladWolf.java
@@ -19,7 +19,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*/
public final class TelJiladWolf extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature");
static {
filter.add(new CardTypePredicate(CardType.ARTIFACT));
diff --git a/Mage.Sets/src/mage/cards/t/TemurBattleRage.java b/Mage.Sets/src/mage/cards/t/TemurBattleRage.java
index 1ec9a35e8a8..48b5c1d021a 100644
--- a/Mage.Sets/src/mage/cards/t/TemurBattleRage.java
+++ b/Mage.Sets/src/mage/cards/t/TemurBattleRage.java
@@ -20,7 +20,7 @@ import java.util.UUID;
*/
public final class TemurBattleRage extends CardImpl {
- private final static String rule = "
Ferocious — That creature also gains trample until end of turn if you control a creature with power 4 or greater";
+ private static final String rule = "
Ferocious — That creature also gains trample until end of turn if you control a creature with power 4 or greater";
public TemurBattleRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TeysaKarlov.java b/Mage.Sets/src/mage/cards/t/TeysaKarlov.java
index 5b4c94bf5c8..4563c6a515b 100644
--- a/Mage.Sets/src/mage/cards/t/TeysaKarlov.java
+++ b/Mage.Sets/src/mage/cards/t/TeysaKarlov.java
@@ -92,8 +92,7 @@ class TeysaKarlovEffect extends ReplacementEffectImpl {
&& game.getPermanentOrLKIBattlefield(numberOfTriggersEvent.getSourceId()) != null
&& numberOfTriggersEvent.getSourceEvent() instanceof ZoneChangeEvent) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) numberOfTriggersEvent.getSourceEvent();
- return zEvent.getFromZone() == Zone.BATTLEFIELD
- && zEvent.getToZone() == Zone.GRAVEYARD
+ return zEvent.isDiesEvent()
&& zEvent.getTarget() != null
&& zEvent.getTarget().isCreature();
}
diff --git a/Mage.Sets/src/mage/cards/t/TeysaOrzhovScion.java b/Mage.Sets/src/mage/cards/t/TeysaOrzhovScion.java
index 41a5b34afd5..4a880fc119b 100644
--- a/Mage.Sets/src/mage/cards/t/TeysaOrzhovScion.java
+++ b/Mage.Sets/src/mage/cards/t/TeysaOrzhovScion.java
@@ -32,8 +32,8 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class TeysaOrzhovScion extends CardImpl {
- private final static FilterControlledCreaturePermanent filterWhite = new FilterControlledCreaturePermanent("three white creatures");
- private final static FilterCreaturePermanent filterBlack = new FilterCreaturePermanent("another black creature you control");
+ private static final FilterControlledCreaturePermanent filterWhite = new FilterControlledCreaturePermanent("three white creatures");
+ private static final FilterCreaturePermanent filterBlack = new FilterCreaturePermanent("another black creature you control");
static {
filterWhite.add(new ColorPredicate(ObjectColor.WHITE));
filterBlack.add(new ColorPredicate(ObjectColor.BLACK));
diff --git a/Mage.Sets/src/mage/cards/t/TezzeretsBetrayal.java b/Mage.Sets/src/mage/cards/t/TezzeretsBetrayal.java
index f1fc8b79ff8..01e5a3be62b 100644
--- a/Mage.Sets/src/mage/cards/t/TezzeretsBetrayal.java
+++ b/Mage.Sets/src/mage/cards/t/TezzeretsBetrayal.java
@@ -17,7 +17,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class TezzeretsBetrayal extends CardImpl {
- private final static FilterCard filter = new FilterCard("Tezzeret, Master of Metal");
+ private static final FilterCard filter = new FilterCard("Tezzeret, Master of Metal");
static {
filter.add(new NamePredicate("Tezzeret, Master of Metal"));
diff --git a/Mage.Sets/src/mage/cards/t/TheScorpionGod.java b/Mage.Sets/src/mage/cards/t/TheScorpionGod.java
index b06dc525cb8..b973513f0e4 100644
--- a/Mage.Sets/src/mage/cards/t/TheScorpionGod.java
+++ b/Mage.Sets/src/mage/cards/t/TheScorpionGod.java
@@ -99,7 +99,7 @@ class TheScorpionGodTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
Permanent permanent = game.getPermanentOrLKIBattlefield(zEvent.getTargetId());
if (permanent != null
&& permanent.isCreature()
diff --git a/Mage.Sets/src/mage/cards/t/ThirstingAxe.java b/Mage.Sets/src/mage/cards/t/ThirstingAxe.java
index fe76f099210..169a5151ecf 100644
--- a/Mage.Sets/src/mage/cards/t/ThirstingAxe.java
+++ b/Mage.Sets/src/mage/cards/t/ThirstingAxe.java
@@ -85,7 +85,7 @@ class CombatDamageToCreatureWatcher extends Watcher {
// which objects dealt combat damage to creature during the turn
public final Set dealtCombatDamageToCreature;
- final static String BASIC_KEY = "CombatDamageToCreatureWatcher";
+ static final String BASIC_KEY = "CombatDamageToCreatureWatcher";
public CombatDamageToCreatureWatcher() {
super(BASIC_KEY, WatcherScope.GAME);
diff --git a/Mage.Sets/src/mage/cards/t/ThopterArrest.java b/Mage.Sets/src/mage/cards/t/ThopterArrest.java
index 292158dab19..a5b154d32f5 100644
--- a/Mage.Sets/src/mage/cards/t/ThopterArrest.java
+++ b/Mage.Sets/src/mage/cards/t/ThopterArrest.java
@@ -23,7 +23,7 @@ import mage.target.TargetPermanent;
*/
public final class ThopterArrest extends CardImpl {
- private final static FilterPermanent filter = new FilterPermanent("artifact or creature");
+ private static final FilterPermanent filter = new FilterPermanent("artifact or creature");
static {
filter.add(Predicates.or(
diff --git a/Mage.Sets/src/mage/cards/t/ThornbowArcher.java b/Mage.Sets/src/mage/cards/t/ThornbowArcher.java
index b2ceb7a5ced..6122a804c16 100644
--- a/Mage.Sets/src/mage/cards/t/ThornbowArcher.java
+++ b/Mage.Sets/src/mage/cards/t/ThornbowArcher.java
@@ -45,7 +45,7 @@ public final class ThornbowArcher extends CardImpl {
class ThornbowArcherEffect extends OneShotEffect {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(new SubtypePredicate(SubType.ELF));
diff --git a/Mage.Sets/src/mage/cards/t/ThundermawHellkite.java b/Mage.Sets/src/mage/cards/t/ThundermawHellkite.java
index dfd5ac5b255..24fdde1e704 100644
--- a/Mage.Sets/src/mage/cards/t/ThundermawHellkite.java
+++ b/Mage.Sets/src/mage/cards/t/ThundermawHellkite.java
@@ -27,7 +27,7 @@ import mage.game.permanent.Permanent;
*/
public final class ThundermawHellkite extends CardImpl {
- final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with flying your opponents control");
+ static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with flying your opponents control");
static {
filter.add(new AbilityPredicate(FlyingAbility.class));
diff --git a/Mage.Sets/src/mage/cards/t/TogetherForever.java b/Mage.Sets/src/mage/cards/t/TogetherForever.java
index 97e35cbbe4c..ed2a9aca89c 100644
--- a/Mage.Sets/src/mage/cards/t/TogetherForever.java
+++ b/Mage.Sets/src/mage/cards/t/TogetherForever.java
@@ -106,7 +106,7 @@ class TogetherForeverDelayedTriggeredAbility extends DelayedTriggeredAbility {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getTargetId().equals(target)) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/t/TouchOfMoonglove.java b/Mage.Sets/src/mage/cards/t/TouchOfMoonglove.java
index 995385da7d9..f7353561b44 100644
--- a/Mage.Sets/src/mage/cards/t/TouchOfMoonglove.java
+++ b/Mage.Sets/src/mage/cards/t/TouchOfMoonglove.java
@@ -105,7 +105,7 @@ class TouchOfMoongloveDelayedTriggeredAbility extends DelayedTriggeredAbility {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD
+ if (zEvent.isDiesEvent()
&& zEvent.getTarget().isCreature()) {
boolean damageDealt = false;
for (MageObjectReference mor : zEvent.getTarget().getDealtDamageByThisTurn()) {
diff --git a/Mage.Sets/src/mage/cards/t/TrapjawTyrant.java b/Mage.Sets/src/mage/cards/t/TrapjawTyrant.java
index dbe78a66680..c1ad6180aad 100644
--- a/Mage.Sets/src/mage/cards/t/TrapjawTyrant.java
+++ b/Mage.Sets/src/mage/cards/t/TrapjawTyrant.java
@@ -24,7 +24,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class TrapjawTyrant extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/t/TreefolkSeedlings.java b/Mage.Sets/src/mage/cards/t/TreefolkSeedlings.java
index 46e8aa7f4f8..94bc6cf9f1f 100644
--- a/Mage.Sets/src/mage/cards/t/TreefolkSeedlings.java
+++ b/Mage.Sets/src/mage/cards/t/TreefolkSeedlings.java
@@ -21,7 +21,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public final class TreefolkSeedlings extends CardImpl {
- final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
+ static final FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control");
static {
filterLands.add(new SubtypePredicate(SubType.FOREST));
diff --git a/Mage.Sets/src/mage/cards/t/TreetopRangers.java b/Mage.Sets/src/mage/cards/t/TreetopRangers.java
index 647b8b99348..63f331dea0d 100644
--- a/Mage.Sets/src/mage/cards/t/TreetopRangers.java
+++ b/Mage.Sets/src/mage/cards/t/TreetopRangers.java
@@ -22,7 +22,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*/
public final class TreetopRangers extends CardImpl {
- private final static FilterCreaturePermanent onlyFlyingCreatures = new FilterCreaturePermanent("except by creatures with flying");
+ private static final FilterCreaturePermanent onlyFlyingCreatures = new FilterCreaturePermanent("except by creatures with flying");
static {
onlyFlyingCreatures.add(Predicates.not(new AbilityPredicate(FlyingAbility.class)));
diff --git a/Mage.Sets/src/mage/cards/t/TreetopScout.java b/Mage.Sets/src/mage/cards/t/TreetopScout.java
index ea02bc2b9e1..52068cc52fd 100644
--- a/Mage.Sets/src/mage/cards/t/TreetopScout.java
+++ b/Mage.Sets/src/mage/cards/t/TreetopScout.java
@@ -22,7 +22,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
*/
public final class TreetopScout extends CardImpl {
- private final static FilterCreaturePermanent onlyFlyingCreatures = new FilterCreaturePermanent("except by creatures with flying");
+ private static final FilterCreaturePermanent onlyFlyingCreatures = new FilterCreaturePermanent("except by creatures with flying");
static {
onlyFlyingCreatures.add(Predicates.not(new AbilityPredicate(FlyingAbility.class)));
diff --git a/Mage.Sets/src/mage/cards/t/TurnAside.java b/Mage.Sets/src/mage/cards/t/TurnAside.java
index 600493961b9..245b76b035e 100644
--- a/Mage.Sets/src/mage/cards/t/TurnAside.java
+++ b/Mage.Sets/src/mage/cards/t/TurnAside.java
@@ -18,7 +18,7 @@ import mage.target.TargetSpell;
*/
public final class TurnAside extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("spell that targets a permanent you control");
+ private static final FilterSpell filter = new FilterSpell("spell that targets a permanent you control");
static {
filter.add(new TargetsPermanentPredicate(new FilterControlledPermanent()));
diff --git a/Mage.Sets/src/mage/cards/u/UlamogsDespoiler.java b/Mage.Sets/src/mage/cards/u/UlamogsDespoiler.java
index 2852a710440..8db6e24f69c 100644
--- a/Mage.Sets/src/mage/cards/u/UlamogsDespoiler.java
+++ b/Mage.Sets/src/mage/cards/u/UlamogsDespoiler.java
@@ -54,7 +54,7 @@ public final class UlamogsDespoiler extends CardImpl {
class UlamogsDespoilerEffect extends OneShotEffect {
- private final static FilterCard filter = new FilterCard("cards your opponents own from exile");
+ private static final FilterCard filter = new FilterCard("cards your opponents own from exile");
static {
filter.add(new OwnerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/u/UlamogsNullifier.java b/Mage.Sets/src/mage/cards/u/UlamogsNullifier.java
index 730bf0835e3..3490922e624 100644
--- a/Mage.Sets/src/mage/cards/u/UlamogsNullifier.java
+++ b/Mage.Sets/src/mage/cards/u/UlamogsNullifier.java
@@ -68,7 +68,7 @@ public final class UlamogsNullifier extends CardImpl {
class UlamogsNullifierEffect extends OneShotEffect {
- private final static FilterCard filter = new FilterCard("cards your opponents own from exile");
+ private static final FilterCard filter = new FilterCard("cards your opponents own from exile");
static {
filter.add(new OwnerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/u/UnravelingMummy.java b/Mage.Sets/src/mage/cards/u/UnravelingMummy.java
index ff8bf52ac88..b995e43ca50 100644
--- a/Mage.Sets/src/mage/cards/u/UnravelingMummy.java
+++ b/Mage.Sets/src/mage/cards/u/UnravelingMummy.java
@@ -27,7 +27,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class UnravelingMummy extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking Zombie");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking Zombie");
static {
filter.add(AttackingPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/u/UnstableShapeshifter.java b/Mage.Sets/src/mage/cards/u/UnstableShapeshifter.java
index 7b29054aaaa..d91b45043f2 100644
--- a/Mage.Sets/src/mage/cards/u/UnstableShapeshifter.java
+++ b/Mage.Sets/src/mage/cards/u/UnstableShapeshifter.java
@@ -27,7 +27,7 @@ import mage.util.functions.EmptyApplyToPermanent;
*/
public final class UnstableShapeshifter extends CardImpl {
- final static FilterCreaturePermanent filterAnotherCreature = new FilterCreaturePermanent("another creature");
+ static final FilterCreaturePermanent filterAnotherCreature = new FilterCreaturePermanent("another creature");
static {
filterAnotherCreature.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/u/UnstoppableAsh.java b/Mage.Sets/src/mage/cards/u/UnstoppableAsh.java
index 6ab5dcab8e7..791a81e9be2 100644
--- a/Mage.Sets/src/mage/cards/u/UnstoppableAsh.java
+++ b/Mage.Sets/src/mage/cards/u/UnstoppableAsh.java
@@ -25,7 +25,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class UnstoppableAsh extends CardImpl {
- final static private FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
+ static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/v/VanquishersBanner.java b/Mage.Sets/src/mage/cards/v/VanquishersBanner.java
index 63a8cfd65d3..9c935e622c7 100644
--- a/Mage.Sets/src/mage/cards/v/VanquishersBanner.java
+++ b/Mage.Sets/src/mage/cards/v/VanquishersBanner.java
@@ -29,7 +29,7 @@ import mage.game.stack.Spell;
*/
public final class VanquishersBanner extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control of the chosen type");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control of the chosen type");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java b/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java
index c2de9d7915f..cf9572a5933 100644
--- a/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java
+++ b/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java
@@ -54,7 +54,7 @@ public final class VastwoodAnimist extends CardImpl {
class VastwoodAnimistEffect extends OneShotEffect {
- final static FilterControlledPermanent filterAllies = new FilterControlledPermanent("allies you control");
+ static final FilterControlledPermanent filterAllies = new FilterControlledPermanent("allies you control");
static {
filterAllies.add(new SubtypePredicate(SubType.ALLY));
diff --git a/Mage.Sets/src/mage/cards/v/VelaTheNightClad.java b/Mage.Sets/src/mage/cards/v/VelaTheNightClad.java
index 299bbcb1a5e..8e9015bf3fc 100644
--- a/Mage.Sets/src/mage/cards/v/VelaTheNightClad.java
+++ b/Mage.Sets/src/mage/cards/v/VelaTheNightClad.java
@@ -22,7 +22,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public final class VelaTheNightClad extends CardImpl {
- private final static String rule = "Whenever {this} or another creature you control leaves the battlefield, ";
+ private static final String rule = "Whenever {this} or another creature you control leaves the battlefield, ";
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
static {
diff --git a/Mage.Sets/src/mage/cards/v/VenarianGold.java b/Mage.Sets/src/mage/cards/v/VenarianGold.java
index cb25f2c2317..3de871a0556 100644
--- a/Mage.Sets/src/mage/cards/v/VenarianGold.java
+++ b/Mage.Sets/src/mage/cards/v/VenarianGold.java
@@ -71,7 +71,7 @@ class VenarianGoldValue implements DynamicValue {
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
MageObject mageObject = game.getLastKnownInformation(sourceAbility.getSourceId(), Zone.STACK);
- if (mageObject != null && mageObject instanceof StackObject) {
+ if (mageObject instanceof StackObject) {
return ((StackObject) mageObject).getStackAbility().getManaCostsToPay().getX();
}
return 0;
diff --git a/Mage.Sets/src/mage/cards/v/VerdantCrescendo.java b/Mage.Sets/src/mage/cards/v/VerdantCrescendo.java
index 868a1eebd2e..6f4ae19b5d6 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantCrescendo.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantCrescendo.java
@@ -19,7 +19,7 @@ import java.util.UUID;
*/
public final class VerdantCrescendo extends CardImpl {
- private final static FilterCard filter = new FilterCard("Nissa, Nature's Artisan");
+ private static final FilterCard filter = new FilterCard("Nissa, Nature's Artisan");
static {
filter.add(new NamePredicate("Nissa, Nature's Artisan"));
diff --git a/Mage.Sets/src/mage/cards/v/VeteranBrawlers.java b/Mage.Sets/src/mage/cards/v/VeteranBrawlers.java
index bbc3d1eb1f0..5d25ed9625a 100644
--- a/Mage.Sets/src/mage/cards/v/VeteranBrawlers.java
+++ b/Mage.Sets/src/mage/cards/v/VeteranBrawlers.java
@@ -31,7 +31,7 @@ public final class VeteranBrawlers extends CardImpl {
filter.add(Predicates.not(TappedPredicate.instance));
}
- final static private String rule = "{this} can't block if you control an untapped land";
+ static final private String rule = "{this} can't block if you control an untapped land";
public VeteranBrawlers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/v/VigilantMartyr.java b/Mage.Sets/src/mage/cards/v/VigilantMartyr.java
index e2c4475a47d..91c80f9f9af 100644
--- a/Mage.Sets/src/mage/cards/v/VigilantMartyr.java
+++ b/Mage.Sets/src/mage/cards/v/VigilantMartyr.java
@@ -28,7 +28,7 @@ import java.util.UUID;
*/
public final class VigilantMartyr extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("spell that targets an enchantment");
+ private static final FilterSpell filter = new FilterSpell("spell that targets an enchantment");
static {
filter.add(new TargetsPermanentPredicate(StaticFilters.FILTER_ENCHANTMENT_PERMANENT));
diff --git a/Mage.Sets/src/mage/cards/v/VileAggregate.java b/Mage.Sets/src/mage/cards/v/VileAggregate.java
index e9bfb82417e..a8313c09f94 100644
--- a/Mage.Sets/src/mage/cards/v/VileAggregate.java
+++ b/Mage.Sets/src/mage/cards/v/VileAggregate.java
@@ -25,7 +25,7 @@ import mage.filter.predicate.mageobject.ColorlessPredicate;
*/
public final class VileAggregate extends CardImpl {
- private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("colorless creatures you control");
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("colorless creatures you control");
static {
filter.add(ColorlessPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/v/VillageCannibals.java b/Mage.Sets/src/mage/cards/v/VillageCannibals.java
index 4e58de77ed9..ea6af443dd0 100644
--- a/Mage.Sets/src/mage/cards/v/VillageCannibals.java
+++ b/Mage.Sets/src/mage/cards/v/VillageCannibals.java
@@ -67,7 +67,7 @@ class VillageCannibalsTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
if (permanent != null && permanent.isCreature() && permanent.hasSubtype(SubType.HUMAN, game)
&& !permanent.getId().equals(this.getSourceId())) {
diff --git a/Mage.Sets/src/mage/cards/v/VirulentWound.java b/Mage.Sets/src/mage/cards/v/VirulentWound.java
index 8f806109895..da3fa83f05b 100644
--- a/Mage.Sets/src/mage/cards/v/VirulentWound.java
+++ b/Mage.Sets/src/mage/cards/v/VirulentWound.java
@@ -93,7 +93,7 @@ class VirulentWoundDelayedTriggeredAbility extends DelayedTriggeredAbility {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getTargetId().equals(target)) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
return true;
}
}
diff --git a/Mage.Sets/src/mage/cards/v/VisageOfBolas.java b/Mage.Sets/src/mage/cards/v/VisageOfBolas.java
index 965540ce1e6..cb15e7252ca 100644
--- a/Mage.Sets/src/mage/cards/v/VisageOfBolas.java
+++ b/Mage.Sets/src/mage/cards/v/VisageOfBolas.java
@@ -19,7 +19,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
*/
public final class VisageOfBolas extends CardImpl {
- private final static FilterCard filter = new FilterCard("Nicol Bolas, the Deceiver");
+ private static final FilterCard filter = new FilterCard("Nicol Bolas, the Deceiver");
static {
filter.add(new NamePredicate("Nicol Bolas, the Deceiver"));
diff --git a/Mage.Sets/src/mage/cards/v/VorelOfTheHullClade.java b/Mage.Sets/src/mage/cards/v/VorelOfTheHullClade.java
index 20c2459b9a2..01dbf3b1bfa 100644
--- a/Mage.Sets/src/mage/cards/v/VorelOfTheHullClade.java
+++ b/Mage.Sets/src/mage/cards/v/VorelOfTheHullClade.java
@@ -29,7 +29,7 @@ import mage.target.TargetPermanent;
*/
public final class VorelOfTheHullClade extends CardImpl {
- final static private FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
+ static final private FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
static {
filter.add(Predicates.or(
diff --git a/Mage.Sets/src/mage/cards/v/VraskaTheUnseen.java b/Mage.Sets/src/mage/cards/v/VraskaTheUnseen.java
index 9ba830b1fa3..343271b27d5 100644
--- a/Mage.Sets/src/mage/cards/v/VraskaTheUnseen.java
+++ b/Mage.Sets/src/mage/cards/v/VraskaTheUnseen.java
@@ -74,7 +74,6 @@ public final class VraskaTheUnseen extends CardImpl {
class VraskaTheUnseenGainAbilityEffect extends ContinuousEffectImpl {
protected Ability ability;
- protected int startingTurn;
public VraskaTheUnseenGainAbilityEffect(Ability ability) {
super(Duration.Custom, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
diff --git a/Mage.Sets/src/mage/cards/v/VraskasScorn.java b/Mage.Sets/src/mage/cards/v/VraskasScorn.java
index 1b8b2575372..96871bf15bc 100644
--- a/Mage.Sets/src/mage/cards/v/VraskasScorn.java
+++ b/Mage.Sets/src/mage/cards/v/VraskasScorn.java
@@ -17,7 +17,7 @@ import mage.target.common.TargetOpponent;
*/
public final class VraskasScorn extends CardImpl {
- private final static FilterCard filter = new FilterCard("Vraska, Scheming Gorgon");
+ private static final FilterCard filter = new FilterCard("Vraska, Scheming Gorgon");
static {
filter.add(new NamePredicate(filter.getMessage()));
diff --git a/Mage.Sets/src/mage/cards/v/VraskasStoneglare.java b/Mage.Sets/src/mage/cards/v/VraskasStoneglare.java
index 853236eb458..7c849798bc0 100644
--- a/Mage.Sets/src/mage/cards/v/VraskasStoneglare.java
+++ b/Mage.Sets/src/mage/cards/v/VraskasStoneglare.java
@@ -21,7 +21,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class VraskasStoneglare extends CardImpl {
- private final static FilterCard filter = new FilterCard("Vraska, Regal Gorgon");
+ private static final FilterCard filter = new FilterCard("Vraska, Regal Gorgon");
static {
filter.add(new NamePredicate("Vraska, Regal Gorgon"));
diff --git a/Mage.Sets/src/mage/cards/w/WalkThePlank.java b/Mage.Sets/src/mage/cards/w/WalkThePlank.java
index 3981e5f1981..e4a61b8b6c2 100644
--- a/Mage.Sets/src/mage/cards/w/WalkThePlank.java
+++ b/Mage.Sets/src/mage/cards/w/WalkThePlank.java
@@ -19,7 +19,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class WalkThePlank extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Merfolk creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Merfolk creature");
static {
filter.add(new CardTypePredicate(CardType.CREATURE));
diff --git a/Mage.Sets/src/mage/cards/w/WallOfShadows.java b/Mage.Sets/src/mage/cards/w/WallOfShadows.java
index d87ffe7d98b..248b0bf21e3 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfShadows.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfShadows.java
@@ -111,7 +111,7 @@ class CanTargetOnlyWallsPredicate implements Predicate {
for (Mode mode : stackObject.getStackAbility().getModes().values()) {
for (Target target : mode.getTargets()) {
Filter filter = target.getFilter();
- if (filter != null && filter instanceof FilterPermanent) {
+ if (filter instanceof FilterPermanent) {
for (Object predicate : filter.getPredicates()) {
if (predicate instanceof SubtypePredicate) {
if (predicate.toString().equals("Subtype(Wall)")) {
diff --git a/Mage.Sets/src/mage/cards/w/WarsToll.java b/Mage.Sets/src/mage/cards/w/WarsToll.java
index 3f103a26978..5bff2466a07 100644
--- a/Mage.Sets/src/mage/cards/w/WarsToll.java
+++ b/Mage.Sets/src/mage/cards/w/WarsToll.java
@@ -25,8 +25,8 @@ import mage.players.Player;
*/
public final class WarsToll extends CardImpl {
- private final static FilterCreaturePermanent filterOpponentCreature = new FilterCreaturePermanent("creature an opponent controls");
- private final static FilterLandPermanent filterOpponentLand = new FilterLandPermanent("an opponent taps a land");
+ private static final FilterCreaturePermanent filterOpponentCreature = new FilterCreaturePermanent("creature an opponent controls");
+ private static final FilterLandPermanent filterOpponentLand = new FilterLandPermanent("an opponent taps a land");
static {
filterOpponentCreature.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/w/WatcherOfTheRoost.java b/Mage.Sets/src/mage/cards/w/WatcherOfTheRoost.java
index e0a7d80cc2f..8f7cc44265b 100644
--- a/Mage.Sets/src/mage/cards/w/WatcherOfTheRoost.java
+++ b/Mage.Sets/src/mage/cards/w/WatcherOfTheRoost.java
@@ -24,7 +24,7 @@ import mage.target.common.TargetCardInHand;
*/
public final class WatcherOfTheRoost extends CardImpl {
- private final static FilterCard filter = new FilterCard("a white card in your hand");
+ private static final FilterCard filter = new FilterCard("a white card in your hand");
static {
filter.add(new ColorPredicate(ObjectColor.WHITE));
}
diff --git a/Mage.Sets/src/mage/cards/w/WaxingMoon.java b/Mage.Sets/src/mage/cards/w/WaxingMoon.java
index 7663d5fc9e3..f23908c3bf0 100644
--- a/Mage.Sets/src/mage/cards/w/WaxingMoon.java
+++ b/Mage.Sets/src/mage/cards/w/WaxingMoon.java
@@ -24,7 +24,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class WaxingMoon extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf you control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf you control");
static {
filter.add(new SubtypePredicate(SubType.WEREWOLF));
diff --git a/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java b/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java
index 8c5701f97bf..818e4038535 100644
--- a/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java
+++ b/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java
@@ -23,7 +23,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class WeaverOfLightning extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/w/WildInstincts.java b/Mage.Sets/src/mage/cards/w/WildInstincts.java
index cf6c797b696..7f9d7272482 100644
--- a/Mage.Sets/src/mage/cards/w/WildInstincts.java
+++ b/Mage.Sets/src/mage/cards/w/WildInstincts.java
@@ -21,7 +21,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class WildInstincts extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
diff --git a/Mage.Sets/src/mage/cards/w/WildPair.java b/Mage.Sets/src/mage/cards/w/WildPair.java
index 76c38c96793..b832633bcc0 100644
--- a/Mage.Sets/src/mage/cards/w/WildPair.java
+++ b/Mage.Sets/src/mage/cards/w/WildPair.java
@@ -29,7 +29,7 @@ import mage.watchers.common.CastFromHandWatcher;
*/
public final class WildPair extends CardImpl {
- private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature");
static {
filter.add(new OwnerPredicate(TargetController.YOU));
diff --git a/Mage.Sets/src/mage/cards/w/WortTheRaidmother.java b/Mage.Sets/src/mage/cards/w/WortTheRaidmother.java
index 6fae1461700..9e7608a8e11 100644
--- a/Mage.Sets/src/mage/cards/w/WortTheRaidmother.java
+++ b/Mage.Sets/src/mage/cards/w/WortTheRaidmother.java
@@ -54,7 +54,7 @@ public final class WortTheRaidmother extends CardImpl {
class WortGainConspireEffect extends ContinuousEffectImpl {
- private final static FilterInstantOrSorcerySpell filter = new FilterInstantOrSorcerySpell();
+ private static final FilterInstantOrSorcerySpell filter = new FilterInstantOrSorcerySpell();
static {
filter.add(Predicates.or(new ColorPredicate(ObjectColor.RED), new ColorPredicate(ObjectColor.GREEN)));
diff --git a/Mage.Sets/src/mage/cards/z/ZulaportEnforcer.java b/Mage.Sets/src/mage/cards/z/ZulaportEnforcer.java
index ff5d97542b9..4ee33360d7d 100644
--- a/Mage.Sets/src/mage/cards/z/ZulaportEnforcer.java
+++ b/Mage.Sets/src/mage/cards/z/ZulaportEnforcer.java
@@ -27,7 +27,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public final class ZulaportEnforcer extends LevelerCard {
- private final static FilterCreaturePermanent notBlackCreatures = new FilterCreaturePermanent("except by black creatures");
+ private static final FilterCreaturePermanent notBlackCreatures = new FilterCreaturePermanent("except by black creatures");
static {
notBlackCreatures.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK)));
diff --git a/Mage.Sets/src/mage/sets/Mirage.java b/Mage.Sets/src/mage/sets/Mirage.java
index b0cabb9e7f0..b81b18308df 100644
--- a/Mage.Sets/src/mage/sets/Mirage.java
+++ b/Mage.Sets/src/mage/sets/Mirage.java
@@ -1,339 +1,340 @@
-package mage.sets;
-
-import mage.cards.ExpansionSet;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-/**
- * @author North
- */
-public final class Mirage extends ExpansionSet {
-
- private static final Mirage instance = new Mirage();
-
- public static Mirage getInstance() {
- return instance;
- }
-
- private Mirage() {
- super("Mirage", "MIR", ExpansionSet.buildDate(1996, 8, 21), SetType.EXPANSION);
- this.blockName = "Mirage";
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
-
- cards.add(new SetCardInfo("Abyssal Hunter", 103, Rarity.RARE, mage.cards.a.AbyssalHunter.class));
- cards.add(new SetCardInfo("Afiya Grove", 205, Rarity.RARE, mage.cards.a.AfiyaGrove.class));
- cards.add(new SetCardInfo("Afterlife", 1, Rarity.UNCOMMON, mage.cards.a.Afterlife.class));
- cards.add(new SetCardInfo("Agility", 154, Rarity.COMMON, mage.cards.a.Agility.class));
- cards.add(new SetCardInfo("Alarum", 2, Rarity.COMMON, mage.cards.a.Alarum.class));
- cards.add(new SetCardInfo("Aleatory", 155, Rarity.UNCOMMON, mage.cards.a.Aleatory.class));
- cards.add(new SetCardInfo("Amber Prison", 292, Rarity.RARE, mage.cards.a.AmberPrison.class));
- cards.add(new SetCardInfo("Amulet of Unmaking", 293, Rarity.RARE, mage.cards.a.AmuletOfUnmaking.class));
- cards.add(new SetCardInfo("Ancestral Memories", 52, Rarity.RARE, mage.cards.a.AncestralMemories.class));
- cards.add(new SetCardInfo("Armor of Thorns", 206, Rarity.COMMON, mage.cards.a.ArmorOfThorns.class));
- cards.add(new SetCardInfo("Armorer Guildmage", 156, Rarity.COMMON, mage.cards.a.ArmorerGuildmage.class));
- cards.add(new SetCardInfo("Ashen Powder", 104, Rarity.RARE, mage.cards.a.AshenPowder.class));
- cards.add(new SetCardInfo("Asmira, Holy Avenger", 256, Rarity.RARE, mage.cards.a.AsmiraHolyAvenger.class));
- cards.add(new SetCardInfo("Auspicious Ancestor", 3, Rarity.RARE, mage.cards.a.AuspiciousAncestor.class));
- cards.add(new SetCardInfo("Azimaet Drake", 53, Rarity.COMMON, mage.cards.a.AzimaetDrake.class));
- cards.add(new SetCardInfo("Bad River", 324, Rarity.UNCOMMON, mage.cards.b.BadRiver.class));
- cards.add(new SetCardInfo("Barbed Foliage", 207, Rarity.UNCOMMON, mage.cards.b.BarbedFoliage.class));
- cards.add(new SetCardInfo("Barbed-Back Wurm", 105, Rarity.UNCOMMON, mage.cards.b.BarbedBackWurm.class));
- cards.add(new SetCardInfo("Bay Falcon", 54, Rarity.COMMON, mage.cards.b.BayFalcon.class));
- cards.add(new SetCardInfo("Bazaar of Wonders", 55, Rarity.RARE, mage.cards.b.BazaarOfWonders.class));
- cards.add(new SetCardInfo("Benthic Djinn", 257, Rarity.RARE, mage.cards.b.BenthicDjinn.class));
- cards.add(new SetCardInfo("Binding Agony", 106, Rarity.COMMON, mage.cards.b.BindingAgony.class));
- cards.add(new SetCardInfo("Blighted Shaman", 107, Rarity.UNCOMMON, mage.cards.b.BlightedShaman.class));
- cards.add(new SetCardInfo("Blinding Light", 5, Rarity.UNCOMMON, mage.cards.b.BlindingLight.class));
- cards.add(new SetCardInfo("Blistering Barrier", 159, Rarity.COMMON, mage.cards.b.BlisteringBarrier.class));
- cards.add(new SetCardInfo("Bone Harvest", 108, Rarity.COMMON, mage.cards.b.BoneHarvest.class));
- cards.add(new SetCardInfo("Boomerang", 56, Rarity.COMMON, mage.cards.b.Boomerang.class));
- cards.add(new SetCardInfo("Breathstealer", 109, Rarity.COMMON, mage.cards.b.Breathstealer.class));
- cards.add(new SetCardInfo("Brushwagg", 208, Rarity.RARE, mage.cards.b.Brushwagg.class));
- cards.add(new SetCardInfo("Builder's Bane", 160, Rarity.COMMON, mage.cards.b.BuildersBane.class));
- cards.add(new SetCardInfo("Burning Palm Efreet", 161, Rarity.UNCOMMON, mage.cards.b.BurningPalmEfreet.class));
- cards.add(new SetCardInfo("Burning Shield Askari", 162, Rarity.COMMON, mage.cards.b.BurningShieldAskari.class));
- cards.add(new SetCardInfo("Cadaverous Bloom", 258, Rarity.RARE, mage.cards.c.CadaverousBloom.class));
- cards.add(new SetCardInfo("Cadaverous Knight", 110, Rarity.COMMON, mage.cards.c.CadaverousKnight.class));
- cards.add(new SetCardInfo("Canopy Dragon", 209, Rarity.RARE, mage.cards.c.CanopyDragon.class));
- cards.add(new SetCardInfo("Carrion", 111, Rarity.RARE, mage.cards.c.Carrion.class));
- cards.add(new SetCardInfo("Catacomb Dragon", 112, Rarity.RARE, mage.cards.c.CatacombDragon.class));
- cards.add(new SetCardInfo("Celestial Dawn", 6, Rarity.RARE, mage.cards.c.CelestialDawn.class));
- cards.add(new SetCardInfo("Cerulean Wyvern", 57, Rarity.UNCOMMON, mage.cards.c.CeruleanWyvern.class));
- cards.add(new SetCardInfo("Chaos Charm", 163, Rarity.COMMON, mage.cards.c.ChaosCharm.class));
- cards.add(new SetCardInfo("Chaosphere", 164, Rarity.RARE, mage.cards.c.Chaosphere.class));
- cards.add(new SetCardInfo("Charcoal Diamond", 296, Rarity.UNCOMMON, mage.cards.c.CharcoalDiamond.class));
- cards.add(new SetCardInfo("Chariot of the Sun", 262, Rarity.UNCOMMON, mage.cards.c.ChariotOfTheSun.class));
- cards.add(new SetCardInfo("Choking Sands", 113, Rarity.COMMON, mage.cards.c.ChokingSands.class));
- cards.add(new SetCardInfo("Cinder Cloud", 165, Rarity.UNCOMMON, mage.cards.c.CinderCloud.class));
- cards.add(new SetCardInfo("Civic Guildmage", 7, Rarity.COMMON, mage.cards.c.CivicGuildmage.class));
- cards.add(new SetCardInfo("Cloak of Invisibility", 58, Rarity.COMMON, mage.cards.c.CloakOfInvisibility.class));
- cards.add(new SetCardInfo("Consuming Ferocity", 166, Rarity.UNCOMMON, mage.cards.c.ConsumingFerocity.class));
- cards.add(new SetCardInfo("Coral Fighters", 59, Rarity.UNCOMMON, mage.cards.c.CoralFighters.class));
- cards.add(new SetCardInfo("Crash of Rhinos", 210, Rarity.COMMON, mage.cards.c.CrashOfRhinos.class));
- cards.add(new SetCardInfo("Crimson Hellkite", 167, Rarity.RARE, mage.cards.c.CrimsonHellkite.class));
- cards.add(new SetCardInfo("Crypt Cobra", 114, Rarity.UNCOMMON, mage.cards.c.CryptCobra.class));
- cards.add(new SetCardInfo("Crystal Golem", 298, Rarity.UNCOMMON, mage.cards.c.CrystalGolem.class));
- cards.add(new SetCardInfo("Crystal Vein", 325, Rarity.UNCOMMON, mage.cards.c.CrystalVein.class));
- cards.add(new SetCardInfo("Cursed Totem", 299, Rarity.RARE, mage.cards.c.CursedTotem.class));
- cards.add(new SetCardInfo("Daring Apprentice", 60, Rarity.RARE, mage.cards.d.DaringApprentice.class));
- cards.add(new SetCardInfo("Dark Banishing", 115, Rarity.COMMON, mage.cards.d.DarkBanishing.class));
- cards.add(new SetCardInfo("Dark Ritual", 116, Rarity.COMMON, mage.cards.d.DarkRitual.class));
- cards.add(new SetCardInfo("Dazzling Beauty", 8, Rarity.COMMON, mage.cards.d.DazzlingBeauty.class));
- cards.add(new SetCardInfo("Delirium", 260, Rarity.UNCOMMON, mage.cards.d.Delirium.class));
- cards.add(new SetCardInfo("Dirtwater Wraith", 117, Rarity.COMMON, mage.cards.d.DirtwaterWraith.class));
- cards.add(new SetCardInfo("Disempower", 9, Rarity.COMMON, mage.cards.d.Disempower.class));
- cards.add(new SetCardInfo("Disenchant", 10, Rarity.COMMON, mage.cards.d.Disenchant.class));
- cards.add(new SetCardInfo("Dissipate", 61, Rarity.UNCOMMON, mage.cards.d.Dissipate.class));
- cards.add(new SetCardInfo("Divine Offering", 11, Rarity.COMMON, mage.cards.d.DivineOffering.class));
- cards.add(new SetCardInfo("Divine Retribution", 12, Rarity.RARE, mage.cards.d.DivineRetribution.class));
- cards.add(new SetCardInfo("Drain Life", 118, Rarity.COMMON, mage.cards.d.DrainLife.class));
- cards.add(new SetCardInfo("Dread Specter", 119, Rarity.UNCOMMON, mage.cards.d.DreadSpecter.class));
- cards.add(new SetCardInfo("Dream Cache", 62, Rarity.COMMON, mage.cards.d.DreamCache.class));
- cards.add(new SetCardInfo("Dwarven Miner", 169, Rarity.UNCOMMON, mage.cards.d.DwarvenMiner.class));
- cards.add(new SetCardInfo("Dwarven Nomad", 170, Rarity.COMMON, mage.cards.d.DwarvenNomad.class));
- cards.add(new SetCardInfo("Early Harvest", 213, Rarity.RARE, mage.cards.e.EarlyHarvest.class));
- cards.add(new SetCardInfo("Ebony Charm", 120, Rarity.COMMON, mage.cards.e.EbonyCharm.class));
- cards.add(new SetCardInfo("Ekundu Griffin", 13, Rarity.COMMON, mage.cards.e.EkunduGriffin.class));
- cards.add(new SetCardInfo("Elixir of Vitality", 300, Rarity.UNCOMMON, mage.cards.e.ElixirOfVitality.class));
- cards.add(new SetCardInfo("Emberwilde Caliph", 322, Rarity.RARE, mage.cards.e.EmberwildeCaliph.class));
- cards.add(new SetCardInfo("Emberwilde Djinn", 172, Rarity.RARE, mage.cards.e.EmberwildeDjinn.class));
- cards.add(new SetCardInfo("Energy Bolt", 263, Rarity.RARE, mage.cards.e.EnergyBolt.class));
- cards.add(new SetCardInfo("Energy Vortex", 64, Rarity.RARE, mage.cards.e.EnergyVortex.class));
- cards.add(new SetCardInfo("Enfeeblement", 121, Rarity.COMMON, mage.cards.e.Enfeeblement.class));
- cards.add(new SetCardInfo("Enlightened Tutor", 14, Rarity.UNCOMMON, mage.cards.e.EnlightenedTutor.class));
- cards.add(new SetCardInfo("Ersatz Gnomes", 301, Rarity.UNCOMMON, mage.cards.e.ErsatzGnomes.class));
- cards.add(new SetCardInfo("Ether Well", 65, Rarity.UNCOMMON, mage.cards.e.EtherWell.class));
- cards.add(new SetCardInfo("Ethereal Champion", 15, Rarity.RARE, mage.cards.e.EtherealChampion.class));
- cards.add(new SetCardInfo("Fallow Earth", 214, Rarity.UNCOMMON, mage.cards.f.FallowEarth.class));
- cards.add(new SetCardInfo("Favorable Destiny", 16, Rarity.UNCOMMON, mage.cards.f.FavorableDestiny.class));
- cards.add(new SetCardInfo("Femeref Archers", 215, Rarity.UNCOMMON, mage.cards.f.FemerefArchers.class));
- cards.add(new SetCardInfo("Femeref Healer", 17, Rarity.COMMON, mage.cards.f.FemerefHealer.class));
- cards.add(new SetCardInfo("Femeref Knight", 18, Rarity.COMMON, mage.cards.f.FemerefKnight.class));
- cards.add(new SetCardInfo("Femeref Scouts", 19, Rarity.COMMON, mage.cards.f.FemerefScouts.class));
- cards.add(new SetCardInfo("Feral Shadow", 122, Rarity.COMMON, mage.cards.f.FeralShadow.class));
- cards.add(new SetCardInfo("Fetid Horror", 123, Rarity.COMMON, mage.cards.f.FetidHorror.class));
- cards.add(new SetCardInfo("Final Fortune", 173, Rarity.RARE, mage.cards.f.FinalFortune.class));
- cards.add(new SetCardInfo("Fire Diamond", 302, Rarity.UNCOMMON, mage.cards.f.FireDiamond.class));
- cards.add(new SetCardInfo("Firebreathing", 174, Rarity.COMMON, mage.cards.f.Firebreathing.class));
- cards.add(new SetCardInfo("Flame Elemental", 175, Rarity.UNCOMMON, mage.cards.f.FlameElemental.class));
- cards.add(new SetCardInfo("Flare", 176, Rarity.COMMON, mage.cards.f.Flare.class));
- cards.add(new SetCardInfo("Flash", 66, Rarity.RARE, mage.cards.f.Flash.class));
- cards.add(new SetCardInfo("Flood Plain", 326, Rarity.UNCOMMON, mage.cards.f.FloodPlain.class));
- cards.add(new SetCardInfo("Floodgate", 67, Rarity.UNCOMMON, mage.cards.f.Floodgate.class));
- cards.add(new SetCardInfo("Fog", 216, Rarity.COMMON, mage.cards.f.Fog.class));
- cards.add(new SetCardInfo("Foratog", 217, Rarity.UNCOMMON, mage.cards.f.Foratog.class));
- cards.add(new SetCardInfo("Forbidden Crypt", 124, Rarity.RARE, mage.cards.f.ForbiddenCrypt.class));
- cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Forsaken Wastes", 125, Rarity.RARE, mage.cards.f.ForsakenWastes.class));
- cards.add(new SetCardInfo("Frenetic Efreet", 264, Rarity.RARE, mage.cards.f.FreneticEfreet.class));
- cards.add(new SetCardInfo("Giant Mantis", 218, Rarity.COMMON, mage.cards.g.GiantMantis.class));
- cards.add(new SetCardInfo("Gibbering Hyenas", 219, Rarity.COMMON, mage.cards.g.GibberingHyenas.class));
- cards.add(new SetCardInfo("Goblin Elite Infantry", 177, Rarity.COMMON, mage.cards.g.GoblinEliteInfantry.class));
- cards.add(new SetCardInfo("Goblin Scouts", 178, Rarity.UNCOMMON, mage.cards.g.GoblinScouts.class));
- cards.add(new SetCardInfo("Goblin Soothsayer", 179, Rarity.UNCOMMON, mage.cards.g.GoblinSoothsayer.class));
- cards.add(new SetCardInfo("Goblin Tinkerer", 180, Rarity.COMMON, mage.cards.g.GoblinTinkerer.class));
- cards.add(new SetCardInfo("Granger Guildmage", 220, Rarity.COMMON, mage.cards.g.GrangerGuildmage.class));
- cards.add(new SetCardInfo("Grasslands", 327, Rarity.UNCOMMON, mage.cards.g.Grasslands.class));
- cards.add(new SetCardInfo("Grave Servitude", 126, Rarity.COMMON, mage.cards.g.GraveServitude.class));
- cards.add(new SetCardInfo("Gravebane Zombie", 127, Rarity.COMMON, mage.cards.g.GravebaneZombie.class));
- cards.add(new SetCardInfo("Grim Feast", 265, Rarity.RARE, mage.cards.g.GrimFeast.class));
- cards.add(new SetCardInfo("Grinning Totem", 303, Rarity.RARE, mage.cards.g.GrinningTotem.class));
- cards.add(new SetCardInfo("Hakim, Loreweaver", 68, Rarity.RARE, mage.cards.h.HakimLoreweaver.class));
- cards.add(new SetCardInfo("Hall of Gemstone", 221, Rarity.RARE, mage.cards.h.HallOfGemstone.class));
- cards.add(new SetCardInfo("Hammer of Bogardan", 181, Rarity.RARE, mage.cards.h.HammerOfBogardan.class));
- cards.add(new SetCardInfo("Harbinger of Night", 128, Rarity.RARE, mage.cards.h.HarbingerOfNight.class));
- cards.add(new SetCardInfo("Harbor Guardian", 266, Rarity.UNCOMMON, mage.cards.h.HarborGuardian.class));
- cards.add(new SetCardInfo("Harmattan Efreet", 69, Rarity.UNCOMMON, mage.cards.h.HarmattanEfreet.class));
- cards.add(new SetCardInfo("Hazerider Drake", 268, Rarity.UNCOMMON, mage.cards.h.HazeriderDrake.class));
- cards.add(new SetCardInfo("Healing Salve", 20, Rarity.COMMON, mage.cards.h.HealingSalve.class));
- cards.add(new SetCardInfo("Hivis of the Scale", 182, Rarity.RARE, mage.cards.h.HivisOfTheScale.class));
- cards.add(new SetCardInfo("Horrible Hordes", 304, Rarity.UNCOMMON, mage.cards.h.HorribleHordes.class));
- cards.add(new SetCardInfo("Igneous Golem", 305, Rarity.UNCOMMON, mage.cards.i.IgneousGolem.class));
- cards.add(new SetCardInfo("Illicit Auction", 183, Rarity.RARE, mage.cards.i.IllicitAuction.class));
- cards.add(new SetCardInfo("Illumination", 21, Rarity.UNCOMMON, mage.cards.i.Illumination.class));
- cards.add(new SetCardInfo("Incinerate", 184, Rarity.COMMON, mage.cards.i.Incinerate.class));
- cards.add(new SetCardInfo("Infernal Contract", 129, Rarity.RARE, mage.cards.i.InfernalContract.class));
- cards.add(new SetCardInfo("Iron Tusk Elephant", 22, Rarity.UNCOMMON, mage.cards.i.IronTuskElephant.class));
- cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Ivory Charm", 23, Rarity.COMMON, mage.cards.i.IvoryCharm.class));
- cards.add(new SetCardInfo("Jolrael's Centaur", 222, Rarity.COMMON, mage.cards.j.JolraelsCentaur.class));
- cards.add(new SetCardInfo("Jolt", 70, Rarity.COMMON, mage.cards.j.Jolt.class));
- cards.add(new SetCardInfo("Jungle Patrol", 223, Rarity.RARE, mage.cards.j.JunglePatrol.class));
- cards.add(new SetCardInfo("Jungle Troll", 269, Rarity.UNCOMMON, mage.cards.j.JungleTroll.class));
- cards.add(new SetCardInfo("Jungle Wurm", 224, Rarity.COMMON, mage.cards.j.JungleWurm.class));
- cards.add(new SetCardInfo("Kaervek's Hex", 130, Rarity.UNCOMMON, mage.cards.k.KaerveksHex.class));
- cards.add(new SetCardInfo("Kaervek's Purge", 270, Rarity.UNCOMMON, mage.cards.k.KaerveksPurge.class));
- cards.add(new SetCardInfo("Kaervek's Torch", 185, Rarity.COMMON, mage.cards.k.KaerveksTorch.class));
- cards.add(new SetCardInfo("Karoo Meerkat", 225, Rarity.UNCOMMON, mage.cards.k.KarooMeerkat.class));
- cards.add(new SetCardInfo("Kukemssa Pirates", 71, Rarity.RARE, mage.cards.k.KukemssaPirates.class));
- cards.add(new SetCardInfo("Kukemssa Serpent", 72, Rarity.COMMON, mage.cards.k.KukemssaSerpent.class));
- cards.add(new SetCardInfo("Lead Golem", 306, Rarity.UNCOMMON, mage.cards.l.LeadGolem.class));
- cards.add(new SetCardInfo("Leering Gargoyle", 271, Rarity.RARE, mage.cards.l.LeeringGargoyle.class));
- cards.add(new SetCardInfo("Lightning Reflexes", 186, Rarity.COMMON, mage.cards.l.LightningReflexes.class));
- cards.add(new SetCardInfo("Lion's Eye Diamond", 307, Rarity.RARE, mage.cards.l.LionsEyeDiamond.class));
- cards.add(new SetCardInfo("Locust Swarm", 226, Rarity.UNCOMMON, mage.cards.l.LocustSwarm.class));
- cards.add(new SetCardInfo("Lure of Prey", 227, Rarity.RARE, mage.cards.l.LureOfPrey.class));
- cards.add(new SetCardInfo("Malignant Growth", 272, Rarity.RARE, mage.cards.m.MalignantGrowth.class));
- cards.add(new SetCardInfo("Mana Prism", 308, Rarity.UNCOMMON, mage.cards.m.ManaPrism.class));
- cards.add(new SetCardInfo("Mangara's Tome", 309, Rarity.RARE, mage.cards.m.MangarasTome.class));
- cards.add(new SetCardInfo("Marble Diamond", 310, Rarity.UNCOMMON, mage.cards.m.MarbleDiamond.class));
- cards.add(new SetCardInfo("Maro", 228, Rarity.RARE, mage.cards.m.Maro.class));
- cards.add(new SetCardInfo("Melesse Spirit", 27, Rarity.UNCOMMON, mage.cards.m.MelesseSpirit.class));
- cards.add(new SetCardInfo("Memory Lapse", 74, Rarity.COMMON, mage.cards.m.MemoryLapse.class));
- cards.add(new SetCardInfo("Merfolk Raiders", 75, Rarity.COMMON, mage.cards.m.MerfolkRaiders.class));
- cards.add(new SetCardInfo("Merfolk Seer", 76, Rarity.COMMON, mage.cards.m.MerfolkSeer.class));
- cards.add(new SetCardInfo("Mind Harness", 78, Rarity.UNCOMMON, mage.cards.m.MindHarness.class));
- cards.add(new SetCardInfo("Mire Shade", 131, Rarity.UNCOMMON, mage.cards.m.MireShade.class));
- cards.add(new SetCardInfo("Misers' Cage", 311, Rarity.RARE, mage.cards.m.MisersCage.class));
- cards.add(new SetCardInfo("Mist Dragon", 79, Rarity.RARE, mage.cards.m.MistDragon.class));
- cards.add(new SetCardInfo("Moss Diamond", 312, Rarity.UNCOMMON, mage.cards.m.MossDiamond.class));
- cards.add(new SetCardInfo("Mountain Valley", 328, Rarity.UNCOMMON, mage.cards.m.MountainValley.class));
- cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Mtenda Griffin", 28, Rarity.UNCOMMON, mage.cards.m.MtendaGriffin.class));
- cards.add(new SetCardInfo("Mtenda Herder", 29, Rarity.COMMON, mage.cards.m.MtendaHerder.class));
- cards.add(new SetCardInfo("Mystical Tutor", 80, Rarity.UNCOMMON, mage.cards.m.MysticalTutor.class));
- cards.add(new SetCardInfo("Natural Balance", 231, Rarity.RARE, mage.cards.n.NaturalBalance.class));
- cards.add(new SetCardInfo("Nettletooth Djinn", 232, Rarity.UNCOMMON, mage.cards.n.NettletoothDjinn.class));
- cards.add(new SetCardInfo("Noble Elephant", 30, Rarity.COMMON, mage.cards.n.NobleElephant.class));
- cards.add(new SetCardInfo("Nocturnal Raid", 132, Rarity.UNCOMMON, mage.cards.n.NocturnalRaid.class));
- cards.add(new SetCardInfo("Pacifism", 32, Rarity.COMMON, mage.cards.p.Pacifism.class));
- cards.add(new SetCardInfo("Painful Memories", 133, Rarity.UNCOMMON, mage.cards.p.PainfulMemories.class));
- cards.add(new SetCardInfo("Patagia Golem", 313, Rarity.UNCOMMON, mage.cards.p.PatagiaGolem.class));
- cards.add(new SetCardInfo("Paupers' Cage", 314, Rarity.RARE, mage.cards.p.PaupersCage.class));
- cards.add(new SetCardInfo("Pearl Dragon", 33, Rarity.RARE, mage.cards.p.PearlDragon.class));
- cards.add(new SetCardInfo("Phyrexian Dreadnought", 315, Rarity.RARE, mage.cards.p.PhyrexianDreadnought.class));
- cards.add(new SetCardInfo("Phyrexian Purge", 273, Rarity.RARE, mage.cards.p.PhyrexianPurge.class));
- cards.add(new SetCardInfo("Phyrexian Tribute", 134, Rarity.RARE, mage.cards.p.PhyrexianTribute.class));
- cards.add(new SetCardInfo("Phyrexian Vault", 316, Rarity.UNCOMMON, mage.cards.p.PhyrexianVault.class));
- cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Political Trickery", 81, Rarity.RARE, mage.cards.p.PoliticalTrickery.class));
- cards.add(new SetCardInfo("Polymorph", 82, Rarity.RARE, mage.cards.p.Polymorph.class));
- cards.add(new SetCardInfo("Power Sink", 83, Rarity.COMMON, mage.cards.p.PowerSink.class));
- cards.add(new SetCardInfo("Prismatic Boon", 274, Rarity.UNCOMMON, mage.cards.p.PrismaticBoon.class));
- cards.add(new SetCardInfo("Prismatic Circle", 34, Rarity.COMMON, mage.cards.p.PrismaticCircle.class));
- cards.add(new SetCardInfo("Prismatic Lace", 84, Rarity.RARE, mage.cards.p.PrismaticLace.class));
- cards.add(new SetCardInfo("Psychic Transfer", 85, Rarity.RARE, mage.cards.p.PsychicTransfer.class));
- cards.add(new SetCardInfo("Purgatory", 275, Rarity.RARE, mage.cards.p.Purgatory.class));
- cards.add(new SetCardInfo("Purraj of Urborg", 135, Rarity.RARE, mage.cards.p.PurrajOfUrborg.class));
- cards.add(new SetCardInfo("Pyric Salamander", 187, Rarity.COMMON, mage.cards.p.PyricSalamander.class));
- cards.add(new SetCardInfo("Quirion Elves", 234, Rarity.COMMON, mage.cards.q.QuirionElves.class));
- cards.add(new SetCardInfo("Radiant Essence", 276, Rarity.UNCOMMON, mage.cards.r.RadiantEssence.class));
- cards.add(new SetCardInfo("Raging Spirit", 188, Rarity.COMMON, mage.cards.r.RagingSpirit.class));
- cards.add(new SetCardInfo("Rampant Growth", 235, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
- cards.add(new SetCardInfo("Rashida Scalebane", 35, Rarity.RARE, mage.cards.r.RashidaScalebane.class));
- cards.add(new SetCardInfo("Ravenous Vampire", 136, Rarity.UNCOMMON, mage.cards.r.RavenousVampire.class));
- cards.add(new SetCardInfo("Ray of Command", 86, Rarity.COMMON, mage.cards.r.RayOfCommand.class));
- cards.add(new SetCardInfo("Razor Pendulum", 317, Rarity.RARE, mage.cards.r.RazorPendulum.class));
- cards.add(new SetCardInfo("Reality Ripple", 87, Rarity.COMMON, mage.cards.r.RealityRipple.class));
- cards.add(new SetCardInfo("Reckless Embermage", 189, Rarity.RARE, mage.cards.r.RecklessEmbermage.class));
- cards.add(new SetCardInfo("Regeneration", 236, Rarity.COMMON, mage.cards.r.Regeneration.class));
- cards.add(new SetCardInfo("Reign of Chaos", 190, Rarity.UNCOMMON, mage.cards.r.ReignOfChaos.class));
- cards.add(new SetCardInfo("Reparations", 278, Rarity.RARE, mage.cards.r.Reparations.class));
- cards.add(new SetCardInfo("Restless Dead", 138, Rarity.COMMON, mage.cards.r.RestlessDead.class));
- cards.add(new SetCardInfo("Ritual of Steel", 36, Rarity.COMMON, mage.cards.r.RitualOfSteel.class));
- cards.add(new SetCardInfo("Rock Basilisk", 279, Rarity.RARE, mage.cards.r.RockBasilisk.class));
- cards.add(new SetCardInfo("Rocky Tar Pit", 329, Rarity.UNCOMMON, mage.cards.r.RockyTarPit.class));
- cards.add(new SetCardInfo("Roots of Life", 237, Rarity.UNCOMMON, mage.cards.r.RootsOfLife.class));
- cards.add(new SetCardInfo("Sabertooth Cobra", 238, Rarity.COMMON, mage.cards.s.SabertoothCobra.class));
- cards.add(new SetCardInfo("Sacred Mesa", 37, Rarity.RARE, mage.cards.s.SacredMesa.class));
- cards.add(new SetCardInfo("Sandbar Crocodile", 88, Rarity.COMMON, mage.cards.s.SandbarCrocodile.class));
- cards.add(new SetCardInfo("Sandstorm", 239, Rarity.COMMON, mage.cards.s.Sandstorm.class));
- cards.add(new SetCardInfo("Sapphire Charm", 89, Rarity.COMMON, mage.cards.s.SapphireCharm.class));
- cards.add(new SetCardInfo("Savage Twister", 280, Rarity.UNCOMMON, mage.cards.s.SavageTwister.class));
- cards.add(new SetCardInfo("Sawback Manticore", 281, Rarity.RARE, mage.cards.s.SawbackManticore.class));
- cards.add(new SetCardInfo("Sea Scryer", 90, Rarity.COMMON, mage.cards.s.SeaScryer.class));
- cards.add(new SetCardInfo("Searing Spear Askari", 191, Rarity.COMMON, mage.cards.s.SearingSpearAskari.class));
- cards.add(new SetCardInfo("Seedling Charm", 240, Rarity.COMMON, mage.cards.s.SeedlingCharm.class));
- cards.add(new SetCardInfo("Seeds of Innocence", 241, Rarity.RARE, mage.cards.s.SeedsOfInnocence.class));
- cards.add(new SetCardInfo("Serene Heart", 242, Rarity.COMMON, mage.cards.s.SereneHeart.class));
- cards.add(new SetCardInfo("Sewer Rats", 139, Rarity.COMMON, mage.cards.s.SewerRats.class));
- cards.add(new SetCardInfo("Shadow Guildmage", 140, Rarity.COMMON, mage.cards.s.ShadowGuildmage.class));
- cards.add(new SetCardInfo("Shallow Grave", 141, Rarity.RARE, mage.cards.s.ShallowGrave.class));
- cards.add(new SetCardInfo("Shaper Guildmage", 91, Rarity.COMMON, mage.cards.s.ShaperGuildmage.class));
- cards.add(new SetCardInfo("Shauku's Minion", 283, Rarity.UNCOMMON, mage.cards.s.ShaukusMinion.class));
- cards.add(new SetCardInfo("Shauku, Endbringer", 142, Rarity.RARE, mage.cards.s.ShaukuEndbringer.class));
- cards.add(new SetCardInfo("Shimmer", 92, Rarity.RARE, mage.cards.s.Shimmer.class));
- cards.add(new SetCardInfo("Sidar Jabari", 39, Rarity.RARE, mage.cards.s.SidarJabari.class));
- cards.add(new SetCardInfo("Skulking Ghost", 143, Rarity.COMMON, mage.cards.s.SkulkingGhost.class));
- cards.add(new SetCardInfo("Sky Diamond", 319, Rarity.UNCOMMON, mage.cards.s.SkyDiamond.class));
- cards.add(new SetCardInfo("Soar", 93, Rarity.COMMON, mage.cards.s.Soar.class));
- cards.add(new SetCardInfo("Soul Echo", 40, Rarity.RARE, mage.cards.s.SoulEcho.class));
- cards.add(new SetCardInfo("Soul Rend", 144, Rarity.UNCOMMON, mage.cards.s.SoulRend.class));
- cards.add(new SetCardInfo("Spectral Guardian", 41, Rarity.RARE, mage.cards.s.SpectralGuardian.class));
- cards.add(new SetCardInfo("Spirit of the Night", 146, Rarity.RARE, mage.cards.s.SpiritOfTheNight.class));
- cards.add(new SetCardInfo("Spitting Earth", 193, Rarity.COMMON, mage.cards.s.SpittingEarth.class));
- cards.add(new SetCardInfo("Stalking Tiger", 243, Rarity.COMMON, mage.cards.s.StalkingTiger.class));
- cards.add(new SetCardInfo("Stone Rain", 194, Rarity.COMMON, mage.cards.s.StoneRain.class));
- cards.add(new SetCardInfo("Stupor", 147, Rarity.UNCOMMON, mage.cards.s.Stupor.class));
- cards.add(new SetCardInfo("Subterranean Spirit", 195, Rarity.RARE, mage.cards.s.SubterraneanSpirit.class));
- cards.add(new SetCardInfo("Sunweb", 42, Rarity.RARE, mage.cards.s.Sunweb.class));
- cards.add(new SetCardInfo("Superior Numbers", 244, Rarity.UNCOMMON, mage.cards.s.SuperiorNumbers.class));
- cards.add(new SetCardInfo("Suq'Ata Firewalker", 94, Rarity.UNCOMMON, mage.cards.s.SuqAtaFirewalker.class));
- cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
- cards.add(new SetCardInfo("Talruum Minotaur", 196, Rarity.COMMON, mage.cards.t.TalruumMinotaur.class));
- cards.add(new SetCardInfo("Taniwha", 95, Rarity.RARE, mage.cards.t.Taniwha.class));
- cards.add(new SetCardInfo("Teeka's Dragon", 320, Rarity.RARE, mage.cards.t.TeekasDragon.class));
- cards.add(new SetCardInfo("Teferi's Curse", 96, Rarity.COMMON, mage.cards.t.TeferisCurse.class));
- cards.add(new SetCardInfo("Teferi's Drake", 97, Rarity.COMMON, mage.cards.t.TeferisDrake.class));
- cards.add(new SetCardInfo("Teferi's Isle", 330, Rarity.RARE, mage.cards.t.TeferisIsle.class));
- cards.add(new SetCardInfo("Telim'Tor", 197, Rarity.RARE, mage.cards.t.TelimTor.class));
- cards.add(new SetCardInfo("Telim'Tor's Darts", 321, Rarity.UNCOMMON, mage.cards.t.TelimTorsDarts.class));
- cards.add(new SetCardInfo("Telim'Tor's Edict", 198, Rarity.RARE, mage.cards.t.TelimTorsEdict.class));
- cards.add(new SetCardInfo("Teremko Griffin", 43, Rarity.COMMON, mage.cards.t.TeremkoGriffin.class));
- cards.add(new SetCardInfo("Thirst", 99, Rarity.COMMON, mage.cards.t.Thirst.class));
- cards.add(new SetCardInfo("Tidal Wave", 100, Rarity.UNCOMMON, mage.cards.t.TidalWave.class));
- cards.add(new SetCardInfo("Tombstone Stairwell", 149, Rarity.RARE, mage.cards.t.TombstoneStairwell.class));
- cards.add(new SetCardInfo("Tranquil Domain", 245, Rarity.COMMON, mage.cards.t.TranquilDomain.class));
- cards.add(new SetCardInfo("Tropical Storm", 246, Rarity.UNCOMMON, mage.cards.t.TropicalStorm.class));
- cards.add(new SetCardInfo("Uktabi Faerie", 247, Rarity.COMMON, mage.cards.u.UktabiFaerie.class));
- cards.add(new SetCardInfo("Uktabi Wildcats", 248, Rarity.RARE, mage.cards.u.UktabiWildcats.class));
- cards.add(new SetCardInfo("Unfulfilled Desires", 285, Rarity.RARE, mage.cards.u.UnfulfilledDesires.class));
- cards.add(new SetCardInfo("Unseen Walker", 249, Rarity.UNCOMMON, mage.cards.u.UnseenWalker.class));
- cards.add(new SetCardInfo("Unyaro Bee Sting", 250, Rarity.UNCOMMON, mage.cards.u.UnyaroBeeSting.class));
- cards.add(new SetCardInfo("Unyaro Griffin", 44, Rarity.UNCOMMON, mage.cards.u.UnyaroGriffin.class));
- cards.add(new SetCardInfo("Vaporous Djinn", 101, Rarity.UNCOMMON, mage.cards.v.VaporousDjinn.class));
- cards.add(new SetCardInfo("Ventifact Bottle", 323, Rarity.RARE, mage.cards.v.VentifactBottle.class));
- cards.add(new SetCardInfo("Viashino Warrior", 200, Rarity.COMMON, mage.cards.v.ViashinoWarrior.class));
- cards.add(new SetCardInfo("Vigilant Martyr", 45, Rarity.UNCOMMON, mage.cards.v.VigilantMartyr.class));
- cards.add(new SetCardInfo("Village Elder", 251, Rarity.COMMON, mage.cards.v.VillageElder.class));
- cards.add(new SetCardInfo("Vitalizing Cascade", 286, Rarity.UNCOMMON, mage.cards.v.VitalizingCascade.class));
- cards.add(new SetCardInfo("Volcanic Dragon", 201, Rarity.RARE, mage.cards.v.VolcanicDragon.class));
- cards.add(new SetCardInfo("Volcanic Geyser", 202, Rarity.UNCOMMON, mage.cards.v.VolcanicGeyser.class));
- cards.add(new SetCardInfo("Waiting in the Weeds", 252, Rarity.RARE, mage.cards.w.WaitingInTheWeeds.class));
- cards.add(new SetCardInfo("Wall of Roots", 253, Rarity.COMMON, mage.cards.w.WallOfRoots.class));
- cards.add(new SetCardInfo("Ward of Lights", 47, Rarity.COMMON, mage.cards.w.WardOfLights.class));
- cards.add(new SetCardInfo("Warping Wurm", 287, Rarity.RARE, mage.cards.w.WarpingWurm.class));
- cards.add(new SetCardInfo("Wave Elemental", 102, Rarity.UNCOMMON, mage.cards.w.WaveElemental.class));
- cards.add(new SetCardInfo("Wild Elephant", 254, Rarity.COMMON, mage.cards.w.WildElephant.class));
- cards.add(new SetCardInfo("Wildfire Emissary", 203, Rarity.UNCOMMON, mage.cards.w.WildfireEmissary.class));
- cards.add(new SetCardInfo("Windreaper Falcon", 289, Rarity.UNCOMMON, mage.cards.w.WindreaperFalcon.class));
- cards.add(new SetCardInfo("Withering Boon", 152, Rarity.UNCOMMON, mage.cards.w.WitheringBoon.class));
- cards.add(new SetCardInfo("Worldly Tutor", 255, Rarity.UNCOMMON, mage.cards.w.WorldlyTutor.class));
- cards.add(new SetCardInfo("Zebra Unicorn", 290, Rarity.UNCOMMON, mage.cards.z.ZebraUnicorn.class));
- cards.add(new SetCardInfo("Zhalfirin Commander", 49, Rarity.UNCOMMON, mage.cards.z.ZhalfirinCommander.class));
- cards.add(new SetCardInfo("Zhalfirin Knight", 50, Rarity.COMMON, mage.cards.z.ZhalfirinKnight.class));
- cards.add(new SetCardInfo("Zirilan of the Claw", 204, Rarity.RARE, mage.cards.z.ZirilanOfTheClaw.class));
- cards.add(new SetCardInfo("Zombie Mob", 153, Rarity.UNCOMMON, mage.cards.z.ZombieMob.class));
- cards.add(new SetCardInfo("Zuberi, Golden Feather", 51, Rarity.RARE, mage.cards.z.ZuberiGoldenFeather.class));
- }
+package mage.sets;
+
+import mage.cards.ExpansionSet;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ * @author North
+ */
+public final class Mirage extends ExpansionSet {
+
+ private static final Mirage instance = new Mirage();
+
+ public static Mirage getInstance() {
+ return instance;
+ }
+
+ private Mirage() {
+ super("Mirage", "MIR", ExpansionSet.buildDate(1996, 8, 21), SetType.EXPANSION);
+ this.blockName = "Mirage";
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+
+ cards.add(new SetCardInfo("Abyssal Hunter", 103, Rarity.RARE, mage.cards.a.AbyssalHunter.class));
+ cards.add(new SetCardInfo("Afiya Grove", 205, Rarity.RARE, mage.cards.a.AfiyaGrove.class));
+ cards.add(new SetCardInfo("Afterlife", 1, Rarity.UNCOMMON, mage.cards.a.Afterlife.class));
+ cards.add(new SetCardInfo("Agility", 154, Rarity.COMMON, mage.cards.a.Agility.class));
+ cards.add(new SetCardInfo("Alarum", 2, Rarity.COMMON, mage.cards.a.Alarum.class));
+ cards.add(new SetCardInfo("Aleatory", 155, Rarity.UNCOMMON, mage.cards.a.Aleatory.class));
+ cards.add(new SetCardInfo("Amber Prison", 292, Rarity.RARE, mage.cards.a.AmberPrison.class));
+ cards.add(new SetCardInfo("Amulet of Unmaking", 293, Rarity.RARE, mage.cards.a.AmuletOfUnmaking.class));
+ cards.add(new SetCardInfo("Ancestral Memories", 52, Rarity.RARE, mage.cards.a.AncestralMemories.class));
+ cards.add(new SetCardInfo("Armor of Thorns", 206, Rarity.COMMON, mage.cards.a.ArmorOfThorns.class));
+ cards.add(new SetCardInfo("Armorer Guildmage", 156, Rarity.COMMON, mage.cards.a.ArmorerGuildmage.class));
+ cards.add(new SetCardInfo("Ashen Powder", 104, Rarity.RARE, mage.cards.a.AshenPowder.class));
+ cards.add(new SetCardInfo("Asmira, Holy Avenger", 256, Rarity.RARE, mage.cards.a.AsmiraHolyAvenger.class));
+ cards.add(new SetCardInfo("Auspicious Ancestor", 3, Rarity.RARE, mage.cards.a.AuspiciousAncestor.class));
+ cards.add(new SetCardInfo("Azimaet Drake", 53, Rarity.COMMON, mage.cards.a.AzimaetDrake.class));
+ cards.add(new SetCardInfo("Bad River", 324, Rarity.UNCOMMON, mage.cards.b.BadRiver.class));
+ cards.add(new SetCardInfo("Barbed Foliage", 207, Rarity.UNCOMMON, mage.cards.b.BarbedFoliage.class));
+ cards.add(new SetCardInfo("Barbed-Back Wurm", 105, Rarity.UNCOMMON, mage.cards.b.BarbedBackWurm.class));
+ cards.add(new SetCardInfo("Bay Falcon", 54, Rarity.COMMON, mage.cards.b.BayFalcon.class));
+ cards.add(new SetCardInfo("Bazaar of Wonders", 55, Rarity.RARE, mage.cards.b.BazaarOfWonders.class));
+ cards.add(new SetCardInfo("Benthic Djinn", 257, Rarity.RARE, mage.cards.b.BenthicDjinn.class));
+ cards.add(new SetCardInfo("Binding Agony", 106, Rarity.COMMON, mage.cards.b.BindingAgony.class));
+ cards.add(new SetCardInfo("Blighted Shaman", 107, Rarity.UNCOMMON, mage.cards.b.BlightedShaman.class));
+ cards.add(new SetCardInfo("Blinding Light", 5, Rarity.UNCOMMON, mage.cards.b.BlindingLight.class));
+ cards.add(new SetCardInfo("Blistering Barrier", 159, Rarity.COMMON, mage.cards.b.BlisteringBarrier.class));
+ cards.add(new SetCardInfo("Bone Harvest", 108, Rarity.COMMON, mage.cards.b.BoneHarvest.class));
+ cards.add(new SetCardInfo("Boomerang", 56, Rarity.COMMON, mage.cards.b.Boomerang.class));
+ cards.add(new SetCardInfo("Breathstealer", 109, Rarity.COMMON, mage.cards.b.Breathstealer.class));
+ cards.add(new SetCardInfo("Brushwagg", 208, Rarity.RARE, mage.cards.b.Brushwagg.class));
+ cards.add(new SetCardInfo("Builder's Bane", 160, Rarity.COMMON, mage.cards.b.BuildersBane.class));
+ cards.add(new SetCardInfo("Burning Palm Efreet", 161, Rarity.UNCOMMON, mage.cards.b.BurningPalmEfreet.class));
+ cards.add(new SetCardInfo("Burning Shield Askari", 162, Rarity.COMMON, mage.cards.b.BurningShieldAskari.class));
+ cards.add(new SetCardInfo("Cadaverous Bloom", 258, Rarity.RARE, mage.cards.c.CadaverousBloom.class));
+ cards.add(new SetCardInfo("Cadaverous Knight", 110, Rarity.COMMON, mage.cards.c.CadaverousKnight.class));
+ cards.add(new SetCardInfo("Canopy Dragon", 209, Rarity.RARE, mage.cards.c.CanopyDragon.class));
+ cards.add(new SetCardInfo("Carrion", 111, Rarity.RARE, mage.cards.c.Carrion.class));
+ cards.add(new SetCardInfo("Catacomb Dragon", 112, Rarity.RARE, mage.cards.c.CatacombDragon.class));
+ cards.add(new SetCardInfo("Celestial Dawn", 6, Rarity.RARE, mage.cards.c.CelestialDawn.class));
+ cards.add(new SetCardInfo("Cerulean Wyvern", 57, Rarity.UNCOMMON, mage.cards.c.CeruleanWyvern.class));
+ cards.add(new SetCardInfo("Chaos Charm", 163, Rarity.COMMON, mage.cards.c.ChaosCharm.class));
+ cards.add(new SetCardInfo("Chaosphere", 164, Rarity.RARE, mage.cards.c.Chaosphere.class));
+ cards.add(new SetCardInfo("Charcoal Diamond", 296, Rarity.UNCOMMON, mage.cards.c.CharcoalDiamond.class));
+ cards.add(new SetCardInfo("Chariot of the Sun", 262, Rarity.UNCOMMON, mage.cards.c.ChariotOfTheSun.class));
+ cards.add(new SetCardInfo("Choking Sands", 113, Rarity.COMMON, mage.cards.c.ChokingSands.class));
+ cards.add(new SetCardInfo("Cinder Cloud", 165, Rarity.UNCOMMON, mage.cards.c.CinderCloud.class));
+ cards.add(new SetCardInfo("Civic Guildmage", 7, Rarity.COMMON, mage.cards.c.CivicGuildmage.class));
+ cards.add(new SetCardInfo("Cloak of Invisibility", 58, Rarity.COMMON, mage.cards.c.CloakOfInvisibility.class));
+ cards.add(new SetCardInfo("Consuming Ferocity", 166, Rarity.UNCOMMON, mage.cards.c.ConsumingFerocity.class));
+ cards.add(new SetCardInfo("Coral Fighters", 59, Rarity.UNCOMMON, mage.cards.c.CoralFighters.class));
+ cards.add(new SetCardInfo("Crash of Rhinos", 210, Rarity.COMMON, mage.cards.c.CrashOfRhinos.class));
+ cards.add(new SetCardInfo("Crimson Hellkite", 167, Rarity.RARE, mage.cards.c.CrimsonHellkite.class));
+ cards.add(new SetCardInfo("Crypt Cobra", 114, Rarity.UNCOMMON, mage.cards.c.CryptCobra.class));
+ cards.add(new SetCardInfo("Crystal Golem", 298, Rarity.UNCOMMON, mage.cards.c.CrystalGolem.class));
+ cards.add(new SetCardInfo("Crystal Vein", 325, Rarity.UNCOMMON, mage.cards.c.CrystalVein.class));
+ cards.add(new SetCardInfo("Cursed Totem", 299, Rarity.RARE, mage.cards.c.CursedTotem.class));
+ cards.add(new SetCardInfo("Daring Apprentice", 60, Rarity.RARE, mage.cards.d.DaringApprentice.class));
+ cards.add(new SetCardInfo("Dark Banishing", 115, Rarity.COMMON, mage.cards.d.DarkBanishing.class));
+ cards.add(new SetCardInfo("Dark Ritual", 116, Rarity.COMMON, mage.cards.d.DarkRitual.class));
+ cards.add(new SetCardInfo("Dazzling Beauty", 8, Rarity.COMMON, mage.cards.d.DazzlingBeauty.class));
+ cards.add(new SetCardInfo("Delirium", 260, Rarity.UNCOMMON, mage.cards.d.Delirium.class));
+ cards.add(new SetCardInfo("Dirtwater Wraith", 117, Rarity.COMMON, mage.cards.d.DirtwaterWraith.class));
+ cards.add(new SetCardInfo("Disempower", 9, Rarity.COMMON, mage.cards.d.Disempower.class));
+ cards.add(new SetCardInfo("Disenchant", 10, Rarity.COMMON, mage.cards.d.Disenchant.class));
+ cards.add(new SetCardInfo("Dissipate", 61, Rarity.UNCOMMON, mage.cards.d.Dissipate.class));
+ cards.add(new SetCardInfo("Divine Offering", 11, Rarity.COMMON, mage.cards.d.DivineOffering.class));
+ cards.add(new SetCardInfo("Divine Retribution", 12, Rarity.RARE, mage.cards.d.DivineRetribution.class));
+ cards.add(new SetCardInfo("Drain Life", 118, Rarity.COMMON, mage.cards.d.DrainLife.class));
+ cards.add(new SetCardInfo("Dread Specter", 119, Rarity.UNCOMMON, mage.cards.d.DreadSpecter.class));
+ cards.add(new SetCardInfo("Dream Cache", 62, Rarity.COMMON, mage.cards.d.DreamCache.class));
+ cards.add(new SetCardInfo("Dwarven Miner", 169, Rarity.UNCOMMON, mage.cards.d.DwarvenMiner.class));
+ cards.add(new SetCardInfo("Dwarven Nomad", 170, Rarity.COMMON, mage.cards.d.DwarvenNomad.class));
+ cards.add(new SetCardInfo("Early Harvest", 213, Rarity.RARE, mage.cards.e.EarlyHarvest.class));
+ cards.add(new SetCardInfo("Ebony Charm", 120, Rarity.COMMON, mage.cards.e.EbonyCharm.class));
+ cards.add(new SetCardInfo("Ekundu Griffin", 13, Rarity.COMMON, mage.cards.e.EkunduGriffin.class));
+ cards.add(new SetCardInfo("Elixir of Vitality", 300, Rarity.UNCOMMON, mage.cards.e.ElixirOfVitality.class));
+ cards.add(new SetCardInfo("Emberwilde Caliph", 322, Rarity.RARE, mage.cards.e.EmberwildeCaliph.class));
+ cards.add(new SetCardInfo("Emberwilde Djinn", 172, Rarity.RARE, mage.cards.e.EmberwildeDjinn.class));
+ cards.add(new SetCardInfo("Energy Bolt", 263, Rarity.RARE, mage.cards.e.EnergyBolt.class));
+ cards.add(new SetCardInfo("Energy Vortex", 64, Rarity.RARE, mage.cards.e.EnergyVortex.class));
+ cards.add(new SetCardInfo("Enfeeblement", 121, Rarity.COMMON, mage.cards.e.Enfeeblement.class));
+ cards.add(new SetCardInfo("Enlightened Tutor", 14, Rarity.UNCOMMON, mage.cards.e.EnlightenedTutor.class));
+ cards.add(new SetCardInfo("Ersatz Gnomes", 301, Rarity.UNCOMMON, mage.cards.e.ErsatzGnomes.class));
+ cards.add(new SetCardInfo("Ether Well", 65, Rarity.UNCOMMON, mage.cards.e.EtherWell.class));
+ cards.add(new SetCardInfo("Ethereal Champion", 15, Rarity.RARE, mage.cards.e.EtherealChampion.class));
+ cards.add(new SetCardInfo("Fallow Earth", 214, Rarity.UNCOMMON, mage.cards.f.FallowEarth.class));
+ cards.add(new SetCardInfo("Favorable Destiny", 16, Rarity.UNCOMMON, mage.cards.f.FavorableDestiny.class));
+ cards.add(new SetCardInfo("Femeref Archers", 215, Rarity.UNCOMMON, mage.cards.f.FemerefArchers.class));
+ cards.add(new SetCardInfo("Femeref Healer", 17, Rarity.COMMON, mage.cards.f.FemerefHealer.class));
+ cards.add(new SetCardInfo("Femeref Knight", 18, Rarity.COMMON, mage.cards.f.FemerefKnight.class));
+ cards.add(new SetCardInfo("Femeref Scouts", 19, Rarity.COMMON, mage.cards.f.FemerefScouts.class));
+ cards.add(new SetCardInfo("Feral Shadow", 122, Rarity.COMMON, mage.cards.f.FeralShadow.class));
+ cards.add(new SetCardInfo("Fetid Horror", 123, Rarity.COMMON, mage.cards.f.FetidHorror.class));
+ cards.add(new SetCardInfo("Final Fortune", 173, Rarity.RARE, mage.cards.f.FinalFortune.class));
+ cards.add(new SetCardInfo("Fire Diamond", 302, Rarity.UNCOMMON, mage.cards.f.FireDiamond.class));
+ cards.add(new SetCardInfo("Firebreathing", 174, Rarity.COMMON, mage.cards.f.Firebreathing.class));
+ cards.add(new SetCardInfo("Flame Elemental", 175, Rarity.UNCOMMON, mage.cards.f.FlameElemental.class));
+ cards.add(new SetCardInfo("Flare", 176, Rarity.COMMON, mage.cards.f.Flare.class));
+ cards.add(new SetCardInfo("Flash", 66, Rarity.RARE, mage.cards.f.Flash.class));
+ cards.add(new SetCardInfo("Flood Plain", 326, Rarity.UNCOMMON, mage.cards.f.FloodPlain.class));
+ cards.add(new SetCardInfo("Floodgate", 67, Rarity.UNCOMMON, mage.cards.f.Floodgate.class));
+ cards.add(new SetCardInfo("Fog", 216, Rarity.COMMON, mage.cards.f.Fog.class));
+ cards.add(new SetCardInfo("Foratog", 217, Rarity.UNCOMMON, mage.cards.f.Foratog.class));
+ cards.add(new SetCardInfo("Forbidden Crypt", 124, Rarity.RARE, mage.cards.f.ForbiddenCrypt.class));
+ cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Forsaken Wastes", 125, Rarity.RARE, mage.cards.f.ForsakenWastes.class));
+ cards.add(new SetCardInfo("Frenetic Efreet", 264, Rarity.RARE, mage.cards.f.FreneticEfreet.class));
+ cards.add(new SetCardInfo("Giant Mantis", 218, Rarity.COMMON, mage.cards.g.GiantMantis.class));
+ cards.add(new SetCardInfo("Gibbering Hyenas", 219, Rarity.COMMON, mage.cards.g.GibberingHyenas.class));
+ cards.add(new SetCardInfo("Goblin Elite Infantry", 177, Rarity.COMMON, mage.cards.g.GoblinEliteInfantry.class));
+ cards.add(new SetCardInfo("Goblin Scouts", 178, Rarity.UNCOMMON, mage.cards.g.GoblinScouts.class));
+ cards.add(new SetCardInfo("Goblin Soothsayer", 179, Rarity.UNCOMMON, mage.cards.g.GoblinSoothsayer.class));
+ cards.add(new SetCardInfo("Goblin Tinkerer", 180, Rarity.COMMON, mage.cards.g.GoblinTinkerer.class));
+ cards.add(new SetCardInfo("Granger Guildmage", 220, Rarity.COMMON, mage.cards.g.GrangerGuildmage.class));
+ cards.add(new SetCardInfo("Grasslands", 327, Rarity.UNCOMMON, mage.cards.g.Grasslands.class));
+ cards.add(new SetCardInfo("Grave Servitude", 126, Rarity.COMMON, mage.cards.g.GraveServitude.class));
+ cards.add(new SetCardInfo("Gravebane Zombie", 127, Rarity.COMMON, mage.cards.g.GravebaneZombie.class));
+ cards.add(new SetCardInfo("Grim Feast", 265, Rarity.RARE, mage.cards.g.GrimFeast.class));
+ cards.add(new SetCardInfo("Grinning Totem", 303, Rarity.RARE, mage.cards.g.GrinningTotem.class));
+ cards.add(new SetCardInfo("Hakim, Loreweaver", 68, Rarity.RARE, mage.cards.h.HakimLoreweaver.class));
+ cards.add(new SetCardInfo("Hall of Gemstone", 221, Rarity.RARE, mage.cards.h.HallOfGemstone.class));
+ cards.add(new SetCardInfo("Hammer of Bogardan", 181, Rarity.RARE, mage.cards.h.HammerOfBogardan.class));
+ cards.add(new SetCardInfo("Harbinger of Night", 128, Rarity.RARE, mage.cards.h.HarbingerOfNight.class));
+ cards.add(new SetCardInfo("Harbor Guardian", 266, Rarity.UNCOMMON, mage.cards.h.HarborGuardian.class));
+ cards.add(new SetCardInfo("Harmattan Efreet", 69, Rarity.UNCOMMON, mage.cards.h.HarmattanEfreet.class));
+ cards.add(new SetCardInfo("Hazerider Drake", 268, Rarity.UNCOMMON, mage.cards.h.HazeriderDrake.class));
+ cards.add(new SetCardInfo("Healing Salve", 20, Rarity.COMMON, mage.cards.h.HealingSalve.class));
+ cards.add(new SetCardInfo("Hivis of the Scale", 182, Rarity.RARE, mage.cards.h.HivisOfTheScale.class));
+ cards.add(new SetCardInfo("Horrible Hordes", 304, Rarity.UNCOMMON, mage.cards.h.HorribleHordes.class));
+ cards.add(new SetCardInfo("Igneous Golem", 305, Rarity.UNCOMMON, mage.cards.i.IgneousGolem.class));
+ cards.add(new SetCardInfo("Illicit Auction", 183, Rarity.RARE, mage.cards.i.IllicitAuction.class));
+ cards.add(new SetCardInfo("Illumination", 21, Rarity.UNCOMMON, mage.cards.i.Illumination.class));
+ cards.add(new SetCardInfo("Incinerate", 184, Rarity.COMMON, mage.cards.i.Incinerate.class));
+ cards.add(new SetCardInfo("Infernal Contract", 129, Rarity.RARE, mage.cards.i.InfernalContract.class));
+ cards.add(new SetCardInfo("Iron Tusk Elephant", 22, Rarity.UNCOMMON, mage.cards.i.IronTuskElephant.class));
+ cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Ivory Charm", 23, Rarity.COMMON, mage.cards.i.IvoryCharm.class));
+ cards.add(new SetCardInfo("Jolrael's Centaur", 222, Rarity.COMMON, mage.cards.j.JolraelsCentaur.class));
+ cards.add(new SetCardInfo("Jolt", 70, Rarity.COMMON, mage.cards.j.Jolt.class));
+ cards.add(new SetCardInfo("Jungle Patrol", 223, Rarity.RARE, mage.cards.j.JunglePatrol.class));
+ cards.add(new SetCardInfo("Jungle Troll", 269, Rarity.UNCOMMON, mage.cards.j.JungleTroll.class));
+ cards.add(new SetCardInfo("Jungle Wurm", 224, Rarity.COMMON, mage.cards.j.JungleWurm.class));
+ cards.add(new SetCardInfo("Kaervek's Hex", 130, Rarity.UNCOMMON, mage.cards.k.KaerveksHex.class));
+ cards.add(new SetCardInfo("Kaervek's Purge", 270, Rarity.UNCOMMON, mage.cards.k.KaerveksPurge.class));
+ cards.add(new SetCardInfo("Kaervek's Torch", 185, Rarity.COMMON, mage.cards.k.KaerveksTorch.class));
+ cards.add(new SetCardInfo("Karoo Meerkat", 225, Rarity.UNCOMMON, mage.cards.k.KarooMeerkat.class));
+ cards.add(new SetCardInfo("Kukemssa Pirates", 71, Rarity.RARE, mage.cards.k.KukemssaPirates.class));
+ cards.add(new SetCardInfo("Kukemssa Serpent", 72, Rarity.COMMON, mage.cards.k.KukemssaSerpent.class));
+ cards.add(new SetCardInfo("Lead Golem", 306, Rarity.UNCOMMON, mage.cards.l.LeadGolem.class));
+ cards.add(new SetCardInfo("Leering Gargoyle", 271, Rarity.RARE, mage.cards.l.LeeringGargoyle.class));
+ cards.add(new SetCardInfo("Lightning Reflexes", 186, Rarity.COMMON, mage.cards.l.LightningReflexes.class));
+ cards.add(new SetCardInfo("Lion's Eye Diamond", 307, Rarity.RARE, mage.cards.l.LionsEyeDiamond.class));
+ cards.add(new SetCardInfo("Locust Swarm", 226, Rarity.UNCOMMON, mage.cards.l.LocustSwarm.class));
+ cards.add(new SetCardInfo("Lure of Prey", 227, Rarity.RARE, mage.cards.l.LureOfPrey.class));
+ cards.add(new SetCardInfo("Malignant Growth", 272, Rarity.RARE, mage.cards.m.MalignantGrowth.class));
+ cards.add(new SetCardInfo("Mana Prism", 308, Rarity.UNCOMMON, mage.cards.m.ManaPrism.class));
+ cards.add(new SetCardInfo("Mangara's Tome", 309, Rarity.RARE, mage.cards.m.MangarasTome.class));
+ cards.add(new SetCardInfo("Marble Diamond", 310, Rarity.UNCOMMON, mage.cards.m.MarbleDiamond.class));
+ cards.add(new SetCardInfo("Maro", 228, Rarity.RARE, mage.cards.m.Maro.class));
+ cards.add(new SetCardInfo("Melesse Spirit", 27, Rarity.UNCOMMON, mage.cards.m.MelesseSpirit.class));
+ cards.add(new SetCardInfo("Memory Lapse", 74, Rarity.COMMON, mage.cards.m.MemoryLapse.class));
+ cards.add(new SetCardInfo("Merfolk Raiders", 75, Rarity.COMMON, mage.cards.m.MerfolkRaiders.class));
+ cards.add(new SetCardInfo("Merfolk Seer", 76, Rarity.COMMON, mage.cards.m.MerfolkSeer.class));
+ cards.add(new SetCardInfo("Mind Harness", 78, Rarity.UNCOMMON, mage.cards.m.MindHarness.class));
+ cards.add(new SetCardInfo("Mire Shade", 131, Rarity.UNCOMMON, mage.cards.m.MireShade.class));
+ cards.add(new SetCardInfo("Misers' Cage", 311, Rarity.RARE, mage.cards.m.MisersCage.class));
+ cards.add(new SetCardInfo("Mist Dragon", 79, Rarity.RARE, mage.cards.m.MistDragon.class));
+ cards.add(new SetCardInfo("Moss Diamond", 312, Rarity.UNCOMMON, mage.cards.m.MossDiamond.class));
+ cards.add(new SetCardInfo("Mountain Valley", 328, Rarity.UNCOMMON, mage.cards.m.MountainValley.class));
+ cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Mtenda Griffin", 28, Rarity.UNCOMMON, mage.cards.m.MtendaGriffin.class));
+ cards.add(new SetCardInfo("Mtenda Herder", 29, Rarity.COMMON, mage.cards.m.MtendaHerder.class));
+ cards.add(new SetCardInfo("Mystical Tutor", 80, Rarity.UNCOMMON, mage.cards.m.MysticalTutor.class));
+ cards.add(new SetCardInfo("Natural Balance", 231, Rarity.RARE, mage.cards.n.NaturalBalance.class));
+ cards.add(new SetCardInfo("Nettletooth Djinn", 232, Rarity.UNCOMMON, mage.cards.n.NettletoothDjinn.class));
+ cards.add(new SetCardInfo("Noble Elephant", 30, Rarity.COMMON, mage.cards.n.NobleElephant.class));
+ cards.add(new SetCardInfo("Nocturnal Raid", 132, Rarity.UNCOMMON, mage.cards.n.NocturnalRaid.class));
+ cards.add(new SetCardInfo("Null Chamber", 31, Rarity.RARE, mage.cards.n.NullChamber.class));
+ cards.add(new SetCardInfo("Pacifism", 32, Rarity.COMMON, mage.cards.p.Pacifism.class));
+ cards.add(new SetCardInfo("Painful Memories", 133, Rarity.UNCOMMON, mage.cards.p.PainfulMemories.class));
+ cards.add(new SetCardInfo("Patagia Golem", 313, Rarity.UNCOMMON, mage.cards.p.PatagiaGolem.class));
+ cards.add(new SetCardInfo("Paupers' Cage", 314, Rarity.RARE, mage.cards.p.PaupersCage.class));
+ cards.add(new SetCardInfo("Pearl Dragon", 33, Rarity.RARE, mage.cards.p.PearlDragon.class));
+ cards.add(new SetCardInfo("Phyrexian Dreadnought", 315, Rarity.RARE, mage.cards.p.PhyrexianDreadnought.class));
+ cards.add(new SetCardInfo("Phyrexian Purge", 273, Rarity.RARE, mage.cards.p.PhyrexianPurge.class));
+ cards.add(new SetCardInfo("Phyrexian Tribute", 134, Rarity.RARE, mage.cards.p.PhyrexianTribute.class));
+ cards.add(new SetCardInfo("Phyrexian Vault", 316, Rarity.UNCOMMON, mage.cards.p.PhyrexianVault.class));
+ cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Political Trickery", 81, Rarity.RARE, mage.cards.p.PoliticalTrickery.class));
+ cards.add(new SetCardInfo("Polymorph", 82, Rarity.RARE, mage.cards.p.Polymorph.class));
+ cards.add(new SetCardInfo("Power Sink", 83, Rarity.COMMON, mage.cards.p.PowerSink.class));
+ cards.add(new SetCardInfo("Prismatic Boon", 274, Rarity.UNCOMMON, mage.cards.p.PrismaticBoon.class));
+ cards.add(new SetCardInfo("Prismatic Circle", 34, Rarity.COMMON, mage.cards.p.PrismaticCircle.class));
+ cards.add(new SetCardInfo("Prismatic Lace", 84, Rarity.RARE, mage.cards.p.PrismaticLace.class));
+ cards.add(new SetCardInfo("Psychic Transfer", 85, Rarity.RARE, mage.cards.p.PsychicTransfer.class));
+ cards.add(new SetCardInfo("Purgatory", 275, Rarity.RARE, mage.cards.p.Purgatory.class));
+ cards.add(new SetCardInfo("Purraj of Urborg", 135, Rarity.RARE, mage.cards.p.PurrajOfUrborg.class));
+ cards.add(new SetCardInfo("Pyric Salamander", 187, Rarity.COMMON, mage.cards.p.PyricSalamander.class));
+ cards.add(new SetCardInfo("Quirion Elves", 234, Rarity.COMMON, mage.cards.q.QuirionElves.class));
+ cards.add(new SetCardInfo("Radiant Essence", 276, Rarity.UNCOMMON, mage.cards.r.RadiantEssence.class));
+ cards.add(new SetCardInfo("Raging Spirit", 188, Rarity.COMMON, mage.cards.r.RagingSpirit.class));
+ cards.add(new SetCardInfo("Rampant Growth", 235, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
+ cards.add(new SetCardInfo("Rashida Scalebane", 35, Rarity.RARE, mage.cards.r.RashidaScalebane.class));
+ cards.add(new SetCardInfo("Ravenous Vampire", 136, Rarity.UNCOMMON, mage.cards.r.RavenousVampire.class));
+ cards.add(new SetCardInfo("Ray of Command", 86, Rarity.COMMON, mage.cards.r.RayOfCommand.class));
+ cards.add(new SetCardInfo("Razor Pendulum", 317, Rarity.RARE, mage.cards.r.RazorPendulum.class));
+ cards.add(new SetCardInfo("Reality Ripple", 87, Rarity.COMMON, mage.cards.r.RealityRipple.class));
+ cards.add(new SetCardInfo("Reckless Embermage", 189, Rarity.RARE, mage.cards.r.RecklessEmbermage.class));
+ cards.add(new SetCardInfo("Regeneration", 236, Rarity.COMMON, mage.cards.r.Regeneration.class));
+ cards.add(new SetCardInfo("Reign of Chaos", 190, Rarity.UNCOMMON, mage.cards.r.ReignOfChaos.class));
+ cards.add(new SetCardInfo("Reparations", 278, Rarity.RARE, mage.cards.r.Reparations.class));
+ cards.add(new SetCardInfo("Restless Dead", 138, Rarity.COMMON, mage.cards.r.RestlessDead.class));
+ cards.add(new SetCardInfo("Ritual of Steel", 36, Rarity.COMMON, mage.cards.r.RitualOfSteel.class));
+ cards.add(new SetCardInfo("Rock Basilisk", 279, Rarity.RARE, mage.cards.r.RockBasilisk.class));
+ cards.add(new SetCardInfo("Rocky Tar Pit", 329, Rarity.UNCOMMON, mage.cards.r.RockyTarPit.class));
+ cards.add(new SetCardInfo("Roots of Life", 237, Rarity.UNCOMMON, mage.cards.r.RootsOfLife.class));
+ cards.add(new SetCardInfo("Sabertooth Cobra", 238, Rarity.COMMON, mage.cards.s.SabertoothCobra.class));
+ cards.add(new SetCardInfo("Sacred Mesa", 37, Rarity.RARE, mage.cards.s.SacredMesa.class));
+ cards.add(new SetCardInfo("Sandbar Crocodile", 88, Rarity.COMMON, mage.cards.s.SandbarCrocodile.class));
+ cards.add(new SetCardInfo("Sandstorm", 239, Rarity.COMMON, mage.cards.s.Sandstorm.class));
+ cards.add(new SetCardInfo("Sapphire Charm", 89, Rarity.COMMON, mage.cards.s.SapphireCharm.class));
+ cards.add(new SetCardInfo("Savage Twister", 280, Rarity.UNCOMMON, mage.cards.s.SavageTwister.class));
+ cards.add(new SetCardInfo("Sawback Manticore", 281, Rarity.RARE, mage.cards.s.SawbackManticore.class));
+ cards.add(new SetCardInfo("Sea Scryer", 90, Rarity.COMMON, mage.cards.s.SeaScryer.class));
+ cards.add(new SetCardInfo("Searing Spear Askari", 191, Rarity.COMMON, mage.cards.s.SearingSpearAskari.class));
+ cards.add(new SetCardInfo("Seedling Charm", 240, Rarity.COMMON, mage.cards.s.SeedlingCharm.class));
+ cards.add(new SetCardInfo("Seeds of Innocence", 241, Rarity.RARE, mage.cards.s.SeedsOfInnocence.class));
+ cards.add(new SetCardInfo("Serene Heart", 242, Rarity.COMMON, mage.cards.s.SereneHeart.class));
+ cards.add(new SetCardInfo("Sewer Rats", 139, Rarity.COMMON, mage.cards.s.SewerRats.class));
+ cards.add(new SetCardInfo("Shadow Guildmage", 140, Rarity.COMMON, mage.cards.s.ShadowGuildmage.class));
+ cards.add(new SetCardInfo("Shallow Grave", 141, Rarity.RARE, mage.cards.s.ShallowGrave.class));
+ cards.add(new SetCardInfo("Shaper Guildmage", 91, Rarity.COMMON, mage.cards.s.ShaperGuildmage.class));
+ cards.add(new SetCardInfo("Shauku's Minion", 283, Rarity.UNCOMMON, mage.cards.s.ShaukusMinion.class));
+ cards.add(new SetCardInfo("Shauku, Endbringer", 142, Rarity.RARE, mage.cards.s.ShaukuEndbringer.class));
+ cards.add(new SetCardInfo("Shimmer", 92, Rarity.RARE, mage.cards.s.Shimmer.class));
+ cards.add(new SetCardInfo("Sidar Jabari", 39, Rarity.RARE, mage.cards.s.SidarJabari.class));
+ cards.add(new SetCardInfo("Skulking Ghost", 143, Rarity.COMMON, mage.cards.s.SkulkingGhost.class));
+ cards.add(new SetCardInfo("Sky Diamond", 319, Rarity.UNCOMMON, mage.cards.s.SkyDiamond.class));
+ cards.add(new SetCardInfo("Soar", 93, Rarity.COMMON, mage.cards.s.Soar.class));
+ cards.add(new SetCardInfo("Soul Echo", 40, Rarity.RARE, mage.cards.s.SoulEcho.class));
+ cards.add(new SetCardInfo("Soul Rend", 144, Rarity.UNCOMMON, mage.cards.s.SoulRend.class));
+ cards.add(new SetCardInfo("Spectral Guardian", 41, Rarity.RARE, mage.cards.s.SpectralGuardian.class));
+ cards.add(new SetCardInfo("Spirit of the Night", 146, Rarity.RARE, mage.cards.s.SpiritOfTheNight.class));
+ cards.add(new SetCardInfo("Spitting Earth", 193, Rarity.COMMON, mage.cards.s.SpittingEarth.class));
+ cards.add(new SetCardInfo("Stalking Tiger", 243, Rarity.COMMON, mage.cards.s.StalkingTiger.class));
+ cards.add(new SetCardInfo("Stone Rain", 194, Rarity.COMMON, mage.cards.s.StoneRain.class));
+ cards.add(new SetCardInfo("Stupor", 147, Rarity.UNCOMMON, mage.cards.s.Stupor.class));
+ cards.add(new SetCardInfo("Subterranean Spirit", 195, Rarity.RARE, mage.cards.s.SubterraneanSpirit.class));
+ cards.add(new SetCardInfo("Sunweb", 42, Rarity.RARE, mage.cards.s.Sunweb.class));
+ cards.add(new SetCardInfo("Superior Numbers", 244, Rarity.UNCOMMON, mage.cards.s.SuperiorNumbers.class));
+ cards.add(new SetCardInfo("Suq'Ata Firewalker", 94, Rarity.UNCOMMON, mage.cards.s.SuqAtaFirewalker.class));
+ cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
+ cards.add(new SetCardInfo("Talruum Minotaur", 196, Rarity.COMMON, mage.cards.t.TalruumMinotaur.class));
+ cards.add(new SetCardInfo("Taniwha", 95, Rarity.RARE, mage.cards.t.Taniwha.class));
+ cards.add(new SetCardInfo("Teeka's Dragon", 320, Rarity.RARE, mage.cards.t.TeekasDragon.class));
+ cards.add(new SetCardInfo("Teferi's Curse", 96, Rarity.COMMON, mage.cards.t.TeferisCurse.class));
+ cards.add(new SetCardInfo("Teferi's Drake", 97, Rarity.COMMON, mage.cards.t.TeferisDrake.class));
+ cards.add(new SetCardInfo("Teferi's Isle", 330, Rarity.RARE, mage.cards.t.TeferisIsle.class));
+ cards.add(new SetCardInfo("Telim'Tor", 197, Rarity.RARE, mage.cards.t.TelimTor.class));
+ cards.add(new SetCardInfo("Telim'Tor's Darts", 321, Rarity.UNCOMMON, mage.cards.t.TelimTorsDarts.class));
+ cards.add(new SetCardInfo("Telim'Tor's Edict", 198, Rarity.RARE, mage.cards.t.TelimTorsEdict.class));
+ cards.add(new SetCardInfo("Teremko Griffin", 43, Rarity.COMMON, mage.cards.t.TeremkoGriffin.class));
+ cards.add(new SetCardInfo("Thirst", 99, Rarity.COMMON, mage.cards.t.Thirst.class));
+ cards.add(new SetCardInfo("Tidal Wave", 100, Rarity.UNCOMMON, mage.cards.t.TidalWave.class));
+ cards.add(new SetCardInfo("Tombstone Stairwell", 149, Rarity.RARE, mage.cards.t.TombstoneStairwell.class));
+ cards.add(new SetCardInfo("Tranquil Domain", 245, Rarity.COMMON, mage.cards.t.TranquilDomain.class));
+ cards.add(new SetCardInfo("Tropical Storm", 246, Rarity.UNCOMMON, mage.cards.t.TropicalStorm.class));
+ cards.add(new SetCardInfo("Uktabi Faerie", 247, Rarity.COMMON, mage.cards.u.UktabiFaerie.class));
+ cards.add(new SetCardInfo("Uktabi Wildcats", 248, Rarity.RARE, mage.cards.u.UktabiWildcats.class));
+ cards.add(new SetCardInfo("Unfulfilled Desires", 285, Rarity.RARE, mage.cards.u.UnfulfilledDesires.class));
+ cards.add(new SetCardInfo("Unseen Walker", 249, Rarity.UNCOMMON, mage.cards.u.UnseenWalker.class));
+ cards.add(new SetCardInfo("Unyaro Bee Sting", 250, Rarity.UNCOMMON, mage.cards.u.UnyaroBeeSting.class));
+ cards.add(new SetCardInfo("Unyaro Griffin", 44, Rarity.UNCOMMON, mage.cards.u.UnyaroGriffin.class));
+ cards.add(new SetCardInfo("Vaporous Djinn", 101, Rarity.UNCOMMON, mage.cards.v.VaporousDjinn.class));
+ cards.add(new SetCardInfo("Ventifact Bottle", 323, Rarity.RARE, mage.cards.v.VentifactBottle.class));
+ cards.add(new SetCardInfo("Viashino Warrior", 200, Rarity.COMMON, mage.cards.v.ViashinoWarrior.class));
+ cards.add(new SetCardInfo("Vigilant Martyr", 45, Rarity.UNCOMMON, mage.cards.v.VigilantMartyr.class));
+ cards.add(new SetCardInfo("Village Elder", 251, Rarity.COMMON, mage.cards.v.VillageElder.class));
+ cards.add(new SetCardInfo("Vitalizing Cascade", 286, Rarity.UNCOMMON, mage.cards.v.VitalizingCascade.class));
+ cards.add(new SetCardInfo("Volcanic Dragon", 201, Rarity.RARE, mage.cards.v.VolcanicDragon.class));
+ cards.add(new SetCardInfo("Volcanic Geyser", 202, Rarity.UNCOMMON, mage.cards.v.VolcanicGeyser.class));
+ cards.add(new SetCardInfo("Waiting in the Weeds", 252, Rarity.RARE, mage.cards.w.WaitingInTheWeeds.class));
+ cards.add(new SetCardInfo("Wall of Roots", 253, Rarity.COMMON, mage.cards.w.WallOfRoots.class));
+ cards.add(new SetCardInfo("Ward of Lights", 47, Rarity.COMMON, mage.cards.w.WardOfLights.class));
+ cards.add(new SetCardInfo("Warping Wurm", 287, Rarity.RARE, mage.cards.w.WarpingWurm.class));
+ cards.add(new SetCardInfo("Wave Elemental", 102, Rarity.UNCOMMON, mage.cards.w.WaveElemental.class));
+ cards.add(new SetCardInfo("Wild Elephant", 254, Rarity.COMMON, mage.cards.w.WildElephant.class));
+ cards.add(new SetCardInfo("Wildfire Emissary", 203, Rarity.UNCOMMON, mage.cards.w.WildfireEmissary.class));
+ cards.add(new SetCardInfo("Windreaper Falcon", 289, Rarity.UNCOMMON, mage.cards.w.WindreaperFalcon.class));
+ cards.add(new SetCardInfo("Withering Boon", 152, Rarity.UNCOMMON, mage.cards.w.WitheringBoon.class));
+ cards.add(new SetCardInfo("Worldly Tutor", 255, Rarity.UNCOMMON, mage.cards.w.WorldlyTutor.class));
+ cards.add(new SetCardInfo("Zebra Unicorn", 290, Rarity.UNCOMMON, mage.cards.z.ZebraUnicorn.class));
+ cards.add(new SetCardInfo("Zhalfirin Commander", 49, Rarity.UNCOMMON, mage.cards.z.ZhalfirinCommander.class));
+ cards.add(new SetCardInfo("Zhalfirin Knight", 50, Rarity.COMMON, mage.cards.z.ZhalfirinKnight.class));
+ cards.add(new SetCardInfo("Zirilan of the Claw", 204, Rarity.RARE, mage.cards.z.ZirilanOfTheClaw.class));
+ cards.add(new SetCardInfo("Zombie Mob", 153, Rarity.UNCOMMON, mage.cards.z.ZombieMob.class));
+ cards.add(new SetCardInfo("Zuberi, Golden Feather", 51, Rarity.RARE, mage.cards.z.ZuberiGoldenFeather.class));
+ }
}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/Visions.java b/Mage.Sets/src/mage/sets/Visions.java
index eccc256a0d8..70ae1d9df1b 100644
--- a/Mage.Sets/src/mage/sets/Visions.java
+++ b/Mage.Sets/src/mage/sets/Visions.java
@@ -1,188 +1,189 @@
-package mage.sets;
-
-import mage.cards.ExpansionSet;
-import mage.constants.Rarity;
-import mage.constants.SetType;
-
-/**
- *
- * @author North
- */
-public final class Visions extends ExpansionSet {
-
- private static final Visions instance = new Visions();
-
- public static Visions getInstance() {
- return instance;
- }
-
- private Visions() {
- super("Visions", "VIS", ExpansionSet.buildDate(1997, 1, 11), SetType.EXPANSION);
- this.blockName = "Mirage";
- this.parentSet = Mirage.getInstance();
- this.hasBasicLands = false;
- this.hasBoosters = true;
- this.numBoosterLands = 0;
- this.numBoosterCommon = 11;
- this.numBoosterUncommon = 3;
- this.numBoosterRare = 1;
- this.ratioBoosterMythic = 0;
- cards.add(new SetCardInfo("Aku Djinn", 51, Rarity.RARE, mage.cards.a.AkuDjinn.class));
- cards.add(new SetCardInfo("Anvil of Bogardan", 141, Rarity.RARE, mage.cards.a.AnvilOfBogardan.class));
- cards.add(new SetCardInfo("Archangel", 1, Rarity.RARE, mage.cards.a.Archangel.class));
- cards.add(new SetCardInfo("Army Ants", 126, Rarity.UNCOMMON, mage.cards.a.ArmyAnts.class));
- cards.add(new SetCardInfo("Betrayal", 26, Rarity.COMMON, mage.cards.b.Betrayal.class));
- cards.add(new SetCardInfo("Blanket of Night", 52, Rarity.UNCOMMON, mage.cards.b.BlanketOfNight.class));
- cards.add(new SetCardInfo("Bogardan Phoenix", 76, Rarity.RARE, mage.cards.b.BogardanPhoenix.class));
- cards.add(new SetCardInfo("Brass-Talon Chimera", 142, Rarity.UNCOMMON, mage.cards.b.BrassTalonChimera.class));
- cards.add(new SetCardInfo("Breathstealer's Crypt", 127, Rarity.RARE, mage.cards.b.BreathstealersCrypt.class));
- cards.add(new SetCardInfo("Breezekeeper", 27, Rarity.COMMON, mage.cards.b.Breezekeeper.class));
- cards.add(new SetCardInfo("Brood of Cockroaches", 53, Rarity.UNCOMMON, mage.cards.b.BroodOfCockroaches.class));
- cards.add(new SetCardInfo("Bull Elephant", 101, Rarity.COMMON, mage.cards.b.BullElephant.class));
- cards.add(new SetCardInfo("Chronatog", 28, Rarity.RARE, mage.cards.c.Chronatog.class));
- cards.add(new SetCardInfo("City of Solitude", 102, Rarity.RARE, mage.cards.c.CityOfSolitude.class));
- cards.add(new SetCardInfo("Cloud Elemental", 29, Rarity.COMMON, mage.cards.c.CloudElemental.class));
- cards.add(new SetCardInfo("Coercion", 54, Rarity.COMMON, mage.cards.c.Coercion.class));
- cards.add(new SetCardInfo("Coral Atoll", 160, Rarity.UNCOMMON, mage.cards.c.CoralAtoll.class));
- cards.add(new SetCardInfo("Corrosion", 128, Rarity.RARE, mage.cards.c.Corrosion.class));
- cards.add(new SetCardInfo("Creeping Mold", 103, Rarity.UNCOMMON, mage.cards.c.CreepingMold.class));
- cards.add(new SetCardInfo("Crypt Rats", 55, Rarity.COMMON, mage.cards.c.CryptRats.class));
- cards.add(new SetCardInfo("Daraja Griffin", 2, Rarity.UNCOMMON, mage.cards.d.DarajaGriffin.class));
- cards.add(new SetCardInfo("Dark Privilege", 56, Rarity.COMMON, mage.cards.d.DarkPrivilege.class));
- cards.add(new SetCardInfo("Death Watch", 57, Rarity.COMMON, mage.cards.d.DeathWatch.class));
- cards.add(new SetCardInfo("Desertion", 30, Rarity.RARE, mage.cards.d.Desertion.class));
- cards.add(new SetCardInfo("Desolation", 58, Rarity.UNCOMMON, mage.cards.d.Desolation.class));
- cards.add(new SetCardInfo("Diamond Kaleidoscope", 143, Rarity.RARE, mage.cards.d.DiamondKaleidoscope.class));
- cards.add(new SetCardInfo("Dormant Volcano", 161, Rarity.UNCOMMON, mage.cards.d.DormantVolcano.class));
- cards.add(new SetCardInfo("Dragon Mask", 144, Rarity.UNCOMMON, mage.cards.d.DragonMask.class));
- cards.add(new SetCardInfo("Dream Tides", 31, Rarity.UNCOMMON, mage.cards.d.DreamTides.class));
- cards.add(new SetCardInfo("Dwarven Vigilantes", 77, Rarity.COMMON, mage.cards.d.DwarvenVigilantes.class));
- cards.add(new SetCardInfo("Elephant Grass", 104, Rarity.UNCOMMON, mage.cards.e.ElephantGrass.class));
- cards.add(new SetCardInfo("Elkin Lair", 78, Rarity.RARE, mage.cards.e.ElkinLair.class));
- cards.add(new SetCardInfo("Elven Cache", 105, Rarity.COMMON, mage.cards.e.ElvenCache.class));
- cards.add(new SetCardInfo("Emerald Charm", 106, Rarity.COMMON, mage.cards.e.EmeraldCharm.class));
- cards.add(new SetCardInfo("Equipoise", 3, Rarity.RARE, mage.cards.e.Equipoise.class));
- cards.add(new SetCardInfo("Everglades", 162, Rarity.UNCOMMON, mage.cards.e.Everglades.class));
- cards.add(new SetCardInfo("Eye of Singularity", 4, Rarity.RARE, mage.cards.e.EyeOfSingularity.class));
- cards.add(new SetCardInfo("Fallen Askari", 59, Rarity.COMMON, mage.cards.f.FallenAskari.class));
- cards.add(new SetCardInfo("Femeref Enchantress", 129, Rarity.RARE, mage.cards.f.FemerefEnchantress.class));
- cards.add(new SetCardInfo("Feral Instinct", 107, Rarity.COMMON, mage.cards.f.FeralInstinct.class));
- cards.add(new SetCardInfo("Fireblast", 79, Rarity.COMMON, mage.cards.f.Fireblast.class));
- cards.add(new SetCardInfo("Firestorm Hellkite", 130, Rarity.RARE, mage.cards.f.FirestormHellkite.class));
- cards.add(new SetCardInfo("Flooded Shoreline", 32, Rarity.RARE, mage.cards.f.FloodedShoreline.class));
- cards.add(new SetCardInfo("Foreshadow", 33, Rarity.UNCOMMON, mage.cards.f.Foreshadow.class));
- cards.add(new SetCardInfo("Freewind Falcon", 5, Rarity.COMMON, mage.cards.f.FreewindFalcon.class));
- cards.add(new SetCardInfo("Funeral Charm", 61, Rarity.COMMON, mage.cards.f.FuneralCharm.class));
- cards.add(new SetCardInfo("Giant Caterpillar", 108, Rarity.COMMON, mage.cards.g.GiantCaterpillar.class));
- cards.add(new SetCardInfo("Goblin Recruiter", 80, Rarity.UNCOMMON, mage.cards.g.GoblinRecruiter.class));
- cards.add(new SetCardInfo("Goblin Swine-Rider", 81, Rarity.COMMON, mage.cards.g.GoblinSwineRider.class));
- cards.add(new SetCardInfo("Gossamer Chains", 6, Rarity.COMMON, mage.cards.g.GossamerChains.class));
- cards.add(new SetCardInfo("Griffin Canyon", 163, Rarity.RARE, mage.cards.g.GriffinCanyon.class));
- cards.add(new SetCardInfo("Guiding Spirit", 131, Rarity.RARE, mage.cards.g.GuidingSpirit.class));
- cards.add(new SetCardInfo("Hearth Charm", 82, Rarity.COMMON, mage.cards.h.HearthCharm.class));
- cards.add(new SetCardInfo("Helm of Awakening", 145, Rarity.UNCOMMON, mage.cards.h.HelmOfAwakening.class));
- cards.add(new SetCardInfo("Honorable Passage", 7, Rarity.UNCOMMON, mage.cards.h.HonorablePassage.class));
- cards.add(new SetCardInfo("Hope Charm", 8, Rarity.COMMON, mage.cards.h.HopeCharm.class));
- cards.add(new SetCardInfo("Hulking Cyclops", 84, Rarity.UNCOMMON, mage.cards.h.HulkingCyclops.class));
- cards.add(new SetCardInfo("Impulse", 34, Rarity.COMMON, mage.cards.i.Impulse.class));
- cards.add(new SetCardInfo("Infantry Veteran", 9, Rarity.COMMON, mage.cards.i.InfantryVeteran.class));
- cards.add(new SetCardInfo("Inspiration", 35, Rarity.COMMON, mage.cards.i.Inspiration.class));
- cards.add(new SetCardInfo("Iron-Heart Chimera", 146, Rarity.UNCOMMON, mage.cards.i.IronHeartChimera.class));
- cards.add(new SetCardInfo("Jamuraan Lion", 10, Rarity.COMMON, mage.cards.j.JamuraanLion.class));
- cards.add(new SetCardInfo("Juju Bubble", 147, Rarity.UNCOMMON, mage.cards.j.JujuBubble.class));
- cards.add(new SetCardInfo("Jungle Basin", 164, Rarity.UNCOMMON, mage.cards.j.JungleBasin.class));
- cards.add(new SetCardInfo("Kaervek's Spite", 63, Rarity.RARE, mage.cards.k.KaerveksSpite.class));
- cards.add(new SetCardInfo("Karoo", 165, Rarity.UNCOMMON, mage.cards.k.Karoo.class));
- cards.add(new SetCardInfo("Katabatic Winds", 109, Rarity.RARE, mage.cards.k.KatabaticWinds.class));
- cards.add(new SetCardInfo("Keeper of Kookus", 85, Rarity.COMMON, mage.cards.k.KeeperOfKookus.class));
- cards.add(new SetCardInfo("King Cheetah", 110, Rarity.COMMON, mage.cards.k.KingCheetah.class));
- cards.add(new SetCardInfo("Knight of the Mists", 36, Rarity.COMMON, mage.cards.k.KnightOfTheMists.class));
- cards.add(new SetCardInfo("Knight of Valor", 11, Rarity.COMMON, mage.cards.k.KnightOfValor.class));
- cards.add(new SetCardInfo("Kookus", 86, Rarity.RARE, mage.cards.k.Kookus.class));
- cards.add(new SetCardInfo("Lead-Belly Chimera", 148, Rarity.UNCOMMON, mage.cards.l.LeadBellyChimera.class));
- cards.add(new SetCardInfo("Lichenthrope", 112, Rarity.RARE, mage.cards.l.Lichenthrope.class));
- cards.add(new SetCardInfo("Lightning Cloud", 87, Rarity.RARE, mage.cards.l.LightningCloud.class));
- cards.add(new SetCardInfo("Longbow Archer", 12, Rarity.UNCOMMON, mage.cards.l.LongbowArcher.class));
- cards.add(new SetCardInfo("Magma Mine", 149, Rarity.UNCOMMON, mage.cards.m.MagmaMine.class));
- cards.add(new SetCardInfo("Man-o'-War", 37, Rarity.COMMON, mage.cards.m.ManOWar.class));
- cards.add(new SetCardInfo("Miraculous Recovery", 13, Rarity.UNCOMMON, mage.cards.m.MiraculousRecovery.class));
- cards.add(new SetCardInfo("Mob Mentality", 88, Rarity.UNCOMMON, mage.cards.m.MobMentality.class));
- cards.add(new SetCardInfo("Mortal Wound", 113, Rarity.COMMON, mage.cards.m.MortalWound.class));
- cards.add(new SetCardInfo("Mundungu", 132, Rarity.UNCOMMON, mage.cards.m.Mundungu.class));
- cards.add(new SetCardInfo("Mystic Veil", 38, Rarity.COMMON, mage.cards.m.MysticVeil.class));
- cards.add(new SetCardInfo("Natural Order", 114, Rarity.RARE, mage.cards.n.NaturalOrder.class));
- cards.add(new SetCardInfo("Necromancy", 64, Rarity.UNCOMMON, mage.cards.n.Necromancy.class));
- cards.add(new SetCardInfo("Necrosavant", 65, Rarity.RARE, mage.cards.n.Necrosavant.class));
- cards.add(new SetCardInfo("Nekrataal", 66, Rarity.UNCOMMON, mage.cards.n.Nekrataal.class));
- cards.add(new SetCardInfo("Ovinomancer", 39, Rarity.UNCOMMON, mage.cards.o.Ovinomancer.class));
- cards.add(new SetCardInfo("Panther Warriors", 115, Rarity.COMMON, mage.cards.p.PantherWarriors.class));
- cards.add(new SetCardInfo("Parapet", 14, Rarity.COMMON, mage.cards.p.Parapet.class));
- cards.add(new SetCardInfo("Phyrexian Marauder", 151, Rarity.RARE, mage.cards.p.PhyrexianMarauder.class));
- cards.add(new SetCardInfo("Phyrexian Walker", 152, Rarity.COMMON, mage.cards.p.PhyrexianWalker.class));
- cards.add(new SetCardInfo("Pillar Tombs of Aku", 67, Rarity.RARE, mage.cards.p.PillarTombsOfAku.class));
- cards.add(new SetCardInfo("Prosperity", 40, Rarity.UNCOMMON, mage.cards.p.Prosperity.class));
- cards.add(new SetCardInfo("Python", 68, Rarity.COMMON, mage.cards.p.Python.class));
- cards.add(new SetCardInfo("Quicksand", 166, Rarity.UNCOMMON, mage.cards.q.Quicksand.class));
- cards.add(new SetCardInfo("Quirion Ranger", 117, Rarity.COMMON, mage.cards.q.QuirionRanger.class));
- cards.add(new SetCardInfo("Raging Gorilla", 90, Rarity.COMMON, mage.cards.r.RagingGorilla.class));
- cards.add(new SetCardInfo("Rainbow Efreet", 41, Rarity.RARE, mage.cards.r.RainbowEfreet.class));
- cards.add(new SetCardInfo("Relentless Assault", 91, Rarity.RARE, mage.cards.r.RelentlessAssault.class));
- cards.add(new SetCardInfo("Relic Ward", 16, Rarity.UNCOMMON, mage.cards.r.RelicWard.class));
- cards.add(new SetCardInfo("Remedy", 17, Rarity.COMMON, mage.cards.r.Remedy.class));
- cards.add(new SetCardInfo("Resistance Fighter", 18, Rarity.COMMON, mage.cards.r.ResistanceFighter.class));
- cards.add(new SetCardInfo("Retribution of the Meek", 19, Rarity.RARE, mage.cards.r.RetributionOfTheMeek.class));
- cards.add(new SetCardInfo("Righteous Aura", 20, Rarity.COMMON, mage.cards.r.RighteousAura.class));
- cards.add(new SetCardInfo("Righteous War", 134, Rarity.RARE, mage.cards.r.RighteousWar.class));
- cards.add(new SetCardInfo("River Boa", 118, Rarity.COMMON, mage.cards.r.RiverBoa.class));
- cards.add(new SetCardInfo("Rock Slide", 92, Rarity.COMMON, mage.cards.r.RockSlide.class));
- cards.add(new SetCardInfo("Rowen", 119, Rarity.RARE, mage.cards.r.Rowen.class));
- cards.add(new SetCardInfo("Sands of Time", 153, Rarity.RARE, mage.cards.s.SandsOfTime.class));
- cards.add(new SetCardInfo("Scalebane's Elite", 135, Rarity.UNCOMMON, mage.cards.s.ScalebanesElite.class));
- cards.add(new SetCardInfo("Shimmering Efreet", 42, Rarity.UNCOMMON, mage.cards.s.ShimmeringEfreet.class));
- cards.add(new SetCardInfo("Shrieking Drake", 43, Rarity.COMMON, mage.cards.s.ShriekingDrake.class));
- cards.add(new SetCardInfo("Simoon", 136, Rarity.UNCOMMON, mage.cards.s.Simoon.class));
- cards.add(new SetCardInfo("Sisay's Ring", 154, Rarity.COMMON, mage.cards.s.SisaysRing.class));
- cards.add(new SetCardInfo("Snake Basket", 155, Rarity.RARE, mage.cards.s.SnakeBasket.class));
- cards.add(new SetCardInfo("Solfatara", 93, Rarity.COMMON, mage.cards.s.Solfatara.class));
- cards.add(new SetCardInfo("Song of Blood", 94, Rarity.COMMON, mage.cards.s.SongOfBlood.class));
- cards.add(new SetCardInfo("Spider Climb", 120, Rarity.COMMON, mage.cards.s.SpiderClimb.class));
- cards.add(new SetCardInfo("Spitting Drake", 95, Rarity.UNCOMMON, mage.cards.s.SpittingDrake.class));
- cards.add(new SetCardInfo("Squandered Resources", 137, Rarity.RARE, mage.cards.s.SquanderedResources.class));
- cards.add(new SetCardInfo("Stampeding Wildebeests", 121, Rarity.UNCOMMON, mage.cards.s.StampedingWildebeests.class));
- cards.add(new SetCardInfo("Suleiman's Legacy", 138, Rarity.RARE, mage.cards.s.SuleimansLegacy.class));
- cards.add(new SetCardInfo("Summer Bloom", 122, Rarity.UNCOMMON, mage.cards.s.SummerBloom.class));
- cards.add(new SetCardInfo("Sun Clasp", 21, Rarity.COMMON, mage.cards.s.SunClasp.class));
- cards.add(new SetCardInfo("Suq'Ata Assassin", 69, Rarity.UNCOMMON, mage.cards.s.SuqAtaAssassin.class));
- cards.add(new SetCardInfo("Suq'Ata Lancer", 96, Rarity.COMMON, mage.cards.s.SuqAtaLancer.class));
- cards.add(new SetCardInfo("Talruum Champion", 97, Rarity.COMMON, mage.cards.t.TalruumChampion.class));
- cards.add(new SetCardInfo("Talruum Piper", 98, Rarity.UNCOMMON, mage.cards.t.TalruumPiper.class));
- cards.add(new SetCardInfo("Tar Pit Warrior", 70, Rarity.COMMON, mage.cards.t.TarPitWarrior.class));
- cards.add(new SetCardInfo("Teferi's Honor Guard", 22, Rarity.UNCOMMON, mage.cards.t.TeferisHonorGuard.class));
- cards.add(new SetCardInfo("Teferi's Puzzle Box", 156, Rarity.RARE, mage.cards.t.TeferisPuzzleBox.class));
- cards.add(new SetCardInfo("Teferi's Realm", 44, Rarity.RARE, mage.cards.t.TeferisRealm.class));
- cards.add(new SetCardInfo("Tempest Drake", 139, Rarity.UNCOMMON, mage.cards.t.TempestDrake.class));
- cards.add(new SetCardInfo("Three Wishes", 45, Rarity.RARE, mage.cards.t.ThreeWishes.class));
- cards.add(new SetCardInfo("Tin-Wing Chimera", 157, Rarity.UNCOMMON, mage.cards.t.TinWingChimera.class));
- cards.add(new SetCardInfo("Tithe", 23, Rarity.RARE, mage.cards.t.Tithe.class));
- cards.add(new SetCardInfo("Tremor", 99, Rarity.COMMON, mage.cards.t.Tremor.class));
- cards.add(new SetCardInfo("Triangle of War", 158, Rarity.RARE, mage.cards.t.TriangleOfWar.class));
- cards.add(new SetCardInfo("Uktabi Orangutan", 123, Rarity.UNCOMMON, mage.cards.u.UktabiOrangutan.class));
- cards.add(new SetCardInfo("Undiscovered Paradise", 167, Rarity.RARE, mage.cards.u.UndiscoveredParadise.class));
- cards.add(new SetCardInfo("Undo", 47, Rarity.COMMON, mage.cards.u.Undo.class));
- cards.add(new SetCardInfo("Urborg Mindsucker", 71, Rarity.COMMON, mage.cards.u.UrborgMindsucker.class));
- cards.add(new SetCardInfo("Vampiric Tutor", 72, Rarity.RARE, mage.cards.v.VampiricTutor.class));
- cards.add(new SetCardInfo("Vampirism", 73, Rarity.UNCOMMON, mage.cards.v.Vampirism.class));
- cards.add(new SetCardInfo("Vanishing", 48, Rarity.COMMON, mage.cards.v.Vanishing.class));
- cards.add(new SetCardInfo("Viashino Sandstalker", 100, Rarity.UNCOMMON, mage.cards.v.ViashinoSandstalker.class));
- cards.add(new SetCardInfo("Viashivan Dragon", 140, Rarity.RARE, mage.cards.v.ViashivanDragon.class));
- cards.add(new SetCardInfo("Vision Charm", 49, Rarity.COMMON, mage.cards.v.VisionCharm.class));
- cards.add(new SetCardInfo("Wake of Vultures", 74, Rarity.COMMON, mage.cards.w.WakeOfVultures.class));
- cards.add(new SetCardInfo("Wand of Denial", 159, Rarity.RARE, mage.cards.w.WandOfDenial.class));
- cards.add(new SetCardInfo("Warrior's Honor", 24, Rarity.COMMON, mage.cards.w.WarriorsHonor.class));
- cards.add(new SetCardInfo("Warthog", 124, Rarity.COMMON, mage.cards.w.Warthog.class));
- cards.add(new SetCardInfo("Waterspout Djinn", 50, Rarity.UNCOMMON, mage.cards.w.WaterspoutDjinn.class));
- cards.add(new SetCardInfo("Wicked Reward", 75, Rarity.COMMON, mage.cards.w.WickedReward.class));
- cards.add(new SetCardInfo("Wind Shear", 125, Rarity.UNCOMMON, mage.cards.w.WindShear.class));
- cards.add(new SetCardInfo("Zhalfirin Crusader", 25, Rarity.RARE, mage.cards.z.ZhalfirinCrusader.class));
- }
-}
+package mage.sets;
+
+import mage.cards.ExpansionSet;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ *
+ * @author North
+ */
+public final class Visions extends ExpansionSet {
+
+ private static final Visions instance = new Visions();
+
+ public static Visions getInstance() {
+ return instance;
+ }
+
+ private Visions() {
+ super("Visions", "VIS", ExpansionSet.buildDate(1997, 1, 11), SetType.EXPANSION);
+ this.blockName = "Mirage";
+ this.parentSet = Mirage.getInstance();
+ this.hasBasicLands = false;
+ this.hasBoosters = true;
+ this.numBoosterLands = 0;
+ this.numBoosterCommon = 11;
+ this.numBoosterUncommon = 3;
+ this.numBoosterRare = 1;
+ this.ratioBoosterMythic = 0;
+ cards.add(new SetCardInfo("Aku Djinn", 51, Rarity.RARE, mage.cards.a.AkuDjinn.class));
+ cards.add(new SetCardInfo("Anvil of Bogardan", 141, Rarity.RARE, mage.cards.a.AnvilOfBogardan.class));
+ cards.add(new SetCardInfo("Archangel", 1, Rarity.RARE, mage.cards.a.Archangel.class));
+ cards.add(new SetCardInfo("Army Ants", 126, Rarity.UNCOMMON, mage.cards.a.ArmyAnts.class));
+ cards.add(new SetCardInfo("Betrayal", 26, Rarity.COMMON, mage.cards.b.Betrayal.class));
+ cards.add(new SetCardInfo("Blanket of Night", 52, Rarity.UNCOMMON, mage.cards.b.BlanketOfNight.class));
+ cards.add(new SetCardInfo("Bogardan Phoenix", 76, Rarity.RARE, mage.cards.b.BogardanPhoenix.class));
+ cards.add(new SetCardInfo("Brass-Talon Chimera", 142, Rarity.UNCOMMON, mage.cards.b.BrassTalonChimera.class));
+ cards.add(new SetCardInfo("Breathstealer's Crypt", 127, Rarity.RARE, mage.cards.b.BreathstealersCrypt.class));
+ cards.add(new SetCardInfo("Breezekeeper", 27, Rarity.COMMON, mage.cards.b.Breezekeeper.class));
+ cards.add(new SetCardInfo("Brood of Cockroaches", 53, Rarity.UNCOMMON, mage.cards.b.BroodOfCockroaches.class));
+ cards.add(new SetCardInfo("Bull Elephant", 101, Rarity.COMMON, mage.cards.b.BullElephant.class));
+ cards.add(new SetCardInfo("Chronatog", 28, Rarity.RARE, mage.cards.c.Chronatog.class));
+ cards.add(new SetCardInfo("City of Solitude", 102, Rarity.RARE, mage.cards.c.CityOfSolitude.class));
+ cards.add(new SetCardInfo("Cloud Elemental", 29, Rarity.COMMON, mage.cards.c.CloudElemental.class));
+ cards.add(new SetCardInfo("Coercion", 54, Rarity.COMMON, mage.cards.c.Coercion.class));
+ cards.add(new SetCardInfo("Coral Atoll", 160, Rarity.UNCOMMON, mage.cards.c.CoralAtoll.class));
+ cards.add(new SetCardInfo("Corrosion", 128, Rarity.RARE, mage.cards.c.Corrosion.class));
+ cards.add(new SetCardInfo("Creeping Mold", 103, Rarity.UNCOMMON, mage.cards.c.CreepingMold.class));
+ cards.add(new SetCardInfo("Crypt Rats", 55, Rarity.COMMON, mage.cards.c.CryptRats.class));
+ cards.add(new SetCardInfo("Daraja Griffin", 2, Rarity.UNCOMMON, mage.cards.d.DarajaGriffin.class));
+ cards.add(new SetCardInfo("Dark Privilege", 56, Rarity.COMMON, mage.cards.d.DarkPrivilege.class));
+ cards.add(new SetCardInfo("Death Watch", 57, Rarity.COMMON, mage.cards.d.DeathWatch.class));
+ cards.add(new SetCardInfo("Desertion", 30, Rarity.RARE, mage.cards.d.Desertion.class));
+ cards.add(new SetCardInfo("Desolation", 58, Rarity.UNCOMMON, mage.cards.d.Desolation.class));
+ cards.add(new SetCardInfo("Diamond Kaleidoscope", 143, Rarity.RARE, mage.cards.d.DiamondKaleidoscope.class));
+ cards.add(new SetCardInfo("Dormant Volcano", 161, Rarity.UNCOMMON, mage.cards.d.DormantVolcano.class));
+ cards.add(new SetCardInfo("Dragon Mask", 144, Rarity.UNCOMMON, mage.cards.d.DragonMask.class));
+ cards.add(new SetCardInfo("Dream Tides", 31, Rarity.UNCOMMON, mage.cards.d.DreamTides.class));
+ cards.add(new SetCardInfo("Dwarven Vigilantes", 77, Rarity.COMMON, mage.cards.d.DwarvenVigilantes.class));
+ cards.add(new SetCardInfo("Elephant Grass", 104, Rarity.UNCOMMON, mage.cards.e.ElephantGrass.class));
+ cards.add(new SetCardInfo("Elkin Lair", 78, Rarity.RARE, mage.cards.e.ElkinLair.class));
+ cards.add(new SetCardInfo("Elven Cache", 105, Rarity.COMMON, mage.cards.e.ElvenCache.class));
+ cards.add(new SetCardInfo("Emerald Charm", 106, Rarity.COMMON, mage.cards.e.EmeraldCharm.class));
+ cards.add(new SetCardInfo("Equipoise", 3, Rarity.RARE, mage.cards.e.Equipoise.class));
+ cards.add(new SetCardInfo("Everglades", 162, Rarity.UNCOMMON, mage.cards.e.Everglades.class));
+ cards.add(new SetCardInfo("Eye of Singularity", 4, Rarity.RARE, mage.cards.e.EyeOfSingularity.class));
+ cards.add(new SetCardInfo("Fallen Askari", 59, Rarity.COMMON, mage.cards.f.FallenAskari.class));
+ cards.add(new SetCardInfo("Femeref Enchantress", 129, Rarity.RARE, mage.cards.f.FemerefEnchantress.class));
+ cards.add(new SetCardInfo("Feral Instinct", 107, Rarity.COMMON, mage.cards.f.FeralInstinct.class));
+ cards.add(new SetCardInfo("Fireblast", 79, Rarity.COMMON, mage.cards.f.Fireblast.class));
+ cards.add(new SetCardInfo("Firestorm Hellkite", 130, Rarity.RARE, mage.cards.f.FirestormHellkite.class));
+ cards.add(new SetCardInfo("Flooded Shoreline", 32, Rarity.RARE, mage.cards.f.FloodedShoreline.class));
+ cards.add(new SetCardInfo("Foreshadow", 33, Rarity.UNCOMMON, mage.cards.f.Foreshadow.class));
+ cards.add(new SetCardInfo("Freewind Falcon", 5, Rarity.COMMON, mage.cards.f.FreewindFalcon.class));
+ cards.add(new SetCardInfo("Funeral Charm", 61, Rarity.COMMON, mage.cards.f.FuneralCharm.class));
+ cards.add(new SetCardInfo("Giant Caterpillar", 108, Rarity.COMMON, mage.cards.g.GiantCaterpillar.class));
+ cards.add(new SetCardInfo("Goblin Recruiter", 80, Rarity.UNCOMMON, mage.cards.g.GoblinRecruiter.class));
+ cards.add(new SetCardInfo("Goblin Swine-Rider", 81, Rarity.COMMON, mage.cards.g.GoblinSwineRider.class));
+ cards.add(new SetCardInfo("Gossamer Chains", 6, Rarity.COMMON, mage.cards.g.GossamerChains.class));
+ cards.add(new SetCardInfo("Griffin Canyon", 163, Rarity.RARE, mage.cards.g.GriffinCanyon.class));
+ cards.add(new SetCardInfo("Guiding Spirit", 131, Rarity.RARE, mage.cards.g.GuidingSpirit.class));
+ cards.add(new SetCardInfo("Hearth Charm", 82, Rarity.COMMON, mage.cards.h.HearthCharm.class));
+ cards.add(new SetCardInfo("Helm of Awakening", 145, Rarity.UNCOMMON, mage.cards.h.HelmOfAwakening.class));
+ cards.add(new SetCardInfo("Honorable Passage", 7, Rarity.UNCOMMON, mage.cards.h.HonorablePassage.class));
+ cards.add(new SetCardInfo("Hope Charm", 8, Rarity.COMMON, mage.cards.h.HopeCharm.class));
+ cards.add(new SetCardInfo("Hulking Cyclops", 84, Rarity.UNCOMMON, mage.cards.h.HulkingCyclops.class));
+ cards.add(new SetCardInfo("Impulse", 34, Rarity.COMMON, mage.cards.i.Impulse.class));
+ cards.add(new SetCardInfo("Infantry Veteran", 9, Rarity.COMMON, mage.cards.i.InfantryVeteran.class));
+ cards.add(new SetCardInfo("Inspiration", 35, Rarity.COMMON, mage.cards.i.Inspiration.class));
+ cards.add(new SetCardInfo("Iron-Heart Chimera", 146, Rarity.UNCOMMON, mage.cards.i.IronHeartChimera.class));
+ cards.add(new SetCardInfo("Jamuraan Lion", 10, Rarity.COMMON, mage.cards.j.JamuraanLion.class));
+ cards.add(new SetCardInfo("Juju Bubble", 147, Rarity.UNCOMMON, mage.cards.j.JujuBubble.class));
+ cards.add(new SetCardInfo("Jungle Basin", 164, Rarity.UNCOMMON, mage.cards.j.JungleBasin.class));
+ cards.add(new SetCardInfo("Kaervek's Spite", 63, Rarity.RARE, mage.cards.k.KaerveksSpite.class));
+ cards.add(new SetCardInfo("Karoo", 165, Rarity.UNCOMMON, mage.cards.k.Karoo.class));
+ cards.add(new SetCardInfo("Katabatic Winds", 109, Rarity.RARE, mage.cards.k.KatabaticWinds.class));
+ cards.add(new SetCardInfo("Keeper of Kookus", 85, Rarity.COMMON, mage.cards.k.KeeperOfKookus.class));
+ cards.add(new SetCardInfo("King Cheetah", 110, Rarity.COMMON, mage.cards.k.KingCheetah.class));
+ cards.add(new SetCardInfo("Knight of the Mists", 36, Rarity.COMMON, mage.cards.k.KnightOfTheMists.class));
+ cards.add(new SetCardInfo("Knight of Valor", 11, Rarity.COMMON, mage.cards.k.KnightOfValor.class));
+ cards.add(new SetCardInfo("Kookus", 86, Rarity.RARE, mage.cards.k.Kookus.class));
+ cards.add(new SetCardInfo("Lead-Belly Chimera", 148, Rarity.UNCOMMON, mage.cards.l.LeadBellyChimera.class));
+ cards.add(new SetCardInfo("Lichenthrope", 112, Rarity.RARE, mage.cards.l.Lichenthrope.class));
+ cards.add(new SetCardInfo("Lightning Cloud", 87, Rarity.RARE, mage.cards.l.LightningCloud.class));
+ cards.add(new SetCardInfo("Longbow Archer", 12, Rarity.UNCOMMON, mage.cards.l.LongbowArcher.class));
+ cards.add(new SetCardInfo("Magma Mine", 149, Rarity.UNCOMMON, mage.cards.m.MagmaMine.class));
+ cards.add(new SetCardInfo("Man-o'-War", 37, Rarity.COMMON, mage.cards.m.ManOWar.class));
+ cards.add(new SetCardInfo("Miraculous Recovery", 13, Rarity.UNCOMMON, mage.cards.m.MiraculousRecovery.class));
+ cards.add(new SetCardInfo("Mob Mentality", 88, Rarity.UNCOMMON, mage.cards.m.MobMentality.class));
+ cards.add(new SetCardInfo("Mortal Wound", 113, Rarity.COMMON, mage.cards.m.MortalWound.class));
+ cards.add(new SetCardInfo("Mundungu", 132, Rarity.UNCOMMON, mage.cards.m.Mundungu.class));
+ cards.add(new SetCardInfo("Mystic Veil", 38, Rarity.COMMON, mage.cards.m.MysticVeil.class));
+ cards.add(new SetCardInfo("Natural Order", 114, Rarity.RARE, mage.cards.n.NaturalOrder.class));
+ cards.add(new SetCardInfo("Necromancy", 64, Rarity.UNCOMMON, mage.cards.n.Necromancy.class));
+ cards.add(new SetCardInfo("Necrosavant", 65, Rarity.RARE, mage.cards.n.Necrosavant.class));
+ cards.add(new SetCardInfo("Nekrataal", 66, Rarity.UNCOMMON, mage.cards.n.Nekrataal.class));
+ cards.add(new SetCardInfo("Ovinomancer", 39, Rarity.UNCOMMON, mage.cards.o.Ovinomancer.class));
+ cards.add(new SetCardInfo("Panther Warriors", 115, Rarity.COMMON, mage.cards.p.PantherWarriors.class));
+ cards.add(new SetCardInfo("Parapet", 14, Rarity.COMMON, mage.cards.p.Parapet.class));
+ cards.add(new SetCardInfo("Peace Talks", 15, Rarity.UNCOMMON, mage.cards.p.PeaceTalks.class));
+ cards.add(new SetCardInfo("Phyrexian Marauder", 151, Rarity.RARE, mage.cards.p.PhyrexianMarauder.class));
+ cards.add(new SetCardInfo("Phyrexian Walker", 152, Rarity.COMMON, mage.cards.p.PhyrexianWalker.class));
+ cards.add(new SetCardInfo("Pillar Tombs of Aku", 67, Rarity.RARE, mage.cards.p.PillarTombsOfAku.class));
+ cards.add(new SetCardInfo("Prosperity", 40, Rarity.UNCOMMON, mage.cards.p.Prosperity.class));
+ cards.add(new SetCardInfo("Python", 68, Rarity.COMMON, mage.cards.p.Python.class));
+ cards.add(new SetCardInfo("Quicksand", 166, Rarity.UNCOMMON, mage.cards.q.Quicksand.class));
+ cards.add(new SetCardInfo("Quirion Ranger", 117, Rarity.COMMON, mage.cards.q.QuirionRanger.class));
+ cards.add(new SetCardInfo("Raging Gorilla", 90, Rarity.COMMON, mage.cards.r.RagingGorilla.class));
+ cards.add(new SetCardInfo("Rainbow Efreet", 41, Rarity.RARE, mage.cards.r.RainbowEfreet.class));
+ cards.add(new SetCardInfo("Relentless Assault", 91, Rarity.RARE, mage.cards.r.RelentlessAssault.class));
+ cards.add(new SetCardInfo("Relic Ward", 16, Rarity.UNCOMMON, mage.cards.r.RelicWard.class));
+ cards.add(new SetCardInfo("Remedy", 17, Rarity.COMMON, mage.cards.r.Remedy.class));
+ cards.add(new SetCardInfo("Resistance Fighter", 18, Rarity.COMMON, mage.cards.r.ResistanceFighter.class));
+ cards.add(new SetCardInfo("Retribution of the Meek", 19, Rarity.RARE, mage.cards.r.RetributionOfTheMeek.class));
+ cards.add(new SetCardInfo("Righteous Aura", 20, Rarity.COMMON, mage.cards.r.RighteousAura.class));
+ cards.add(new SetCardInfo("Righteous War", 134, Rarity.RARE, mage.cards.r.RighteousWar.class));
+ cards.add(new SetCardInfo("River Boa", 118, Rarity.COMMON, mage.cards.r.RiverBoa.class));
+ cards.add(new SetCardInfo("Rock Slide", 92, Rarity.COMMON, mage.cards.r.RockSlide.class));
+ cards.add(new SetCardInfo("Rowen", 119, Rarity.RARE, mage.cards.r.Rowen.class));
+ cards.add(new SetCardInfo("Sands of Time", 153, Rarity.RARE, mage.cards.s.SandsOfTime.class));
+ cards.add(new SetCardInfo("Scalebane's Elite", 135, Rarity.UNCOMMON, mage.cards.s.ScalebanesElite.class));
+ cards.add(new SetCardInfo("Shimmering Efreet", 42, Rarity.UNCOMMON, mage.cards.s.ShimmeringEfreet.class));
+ cards.add(new SetCardInfo("Shrieking Drake", 43, Rarity.COMMON, mage.cards.s.ShriekingDrake.class));
+ cards.add(new SetCardInfo("Simoon", 136, Rarity.UNCOMMON, mage.cards.s.Simoon.class));
+ cards.add(new SetCardInfo("Sisay's Ring", 154, Rarity.COMMON, mage.cards.s.SisaysRing.class));
+ cards.add(new SetCardInfo("Snake Basket", 155, Rarity.RARE, mage.cards.s.SnakeBasket.class));
+ cards.add(new SetCardInfo("Solfatara", 93, Rarity.COMMON, mage.cards.s.Solfatara.class));
+ cards.add(new SetCardInfo("Song of Blood", 94, Rarity.COMMON, mage.cards.s.SongOfBlood.class));
+ cards.add(new SetCardInfo("Spider Climb", 120, Rarity.COMMON, mage.cards.s.SpiderClimb.class));
+ cards.add(new SetCardInfo("Spitting Drake", 95, Rarity.UNCOMMON, mage.cards.s.SpittingDrake.class));
+ cards.add(new SetCardInfo("Squandered Resources", 137, Rarity.RARE, mage.cards.s.SquanderedResources.class));
+ cards.add(new SetCardInfo("Stampeding Wildebeests", 121, Rarity.UNCOMMON, mage.cards.s.StampedingWildebeests.class));
+ cards.add(new SetCardInfo("Suleiman's Legacy", 138, Rarity.RARE, mage.cards.s.SuleimansLegacy.class));
+ cards.add(new SetCardInfo("Summer Bloom", 122, Rarity.UNCOMMON, mage.cards.s.SummerBloom.class));
+ cards.add(new SetCardInfo("Sun Clasp", 21, Rarity.COMMON, mage.cards.s.SunClasp.class));
+ cards.add(new SetCardInfo("Suq'Ata Assassin", 69, Rarity.UNCOMMON, mage.cards.s.SuqAtaAssassin.class));
+ cards.add(new SetCardInfo("Suq'Ata Lancer", 96, Rarity.COMMON, mage.cards.s.SuqAtaLancer.class));
+ cards.add(new SetCardInfo("Talruum Champion", 97, Rarity.COMMON, mage.cards.t.TalruumChampion.class));
+ cards.add(new SetCardInfo("Talruum Piper", 98, Rarity.UNCOMMON, mage.cards.t.TalruumPiper.class));
+ cards.add(new SetCardInfo("Tar Pit Warrior", 70, Rarity.COMMON, mage.cards.t.TarPitWarrior.class));
+ cards.add(new SetCardInfo("Teferi's Honor Guard", 22, Rarity.UNCOMMON, mage.cards.t.TeferisHonorGuard.class));
+ cards.add(new SetCardInfo("Teferi's Puzzle Box", 156, Rarity.RARE, mage.cards.t.TeferisPuzzleBox.class));
+ cards.add(new SetCardInfo("Teferi's Realm", 44, Rarity.RARE, mage.cards.t.TeferisRealm.class));
+ cards.add(new SetCardInfo("Tempest Drake", 139, Rarity.UNCOMMON, mage.cards.t.TempestDrake.class));
+ cards.add(new SetCardInfo("Three Wishes", 45, Rarity.RARE, mage.cards.t.ThreeWishes.class));
+ cards.add(new SetCardInfo("Tin-Wing Chimera", 157, Rarity.UNCOMMON, mage.cards.t.TinWingChimera.class));
+ cards.add(new SetCardInfo("Tithe", 23, Rarity.RARE, mage.cards.t.Tithe.class));
+ cards.add(new SetCardInfo("Tremor", 99, Rarity.COMMON, mage.cards.t.Tremor.class));
+ cards.add(new SetCardInfo("Triangle of War", 158, Rarity.RARE, mage.cards.t.TriangleOfWar.class));
+ cards.add(new SetCardInfo("Uktabi Orangutan", 123, Rarity.UNCOMMON, mage.cards.u.UktabiOrangutan.class));
+ cards.add(new SetCardInfo("Undiscovered Paradise", 167, Rarity.RARE, mage.cards.u.UndiscoveredParadise.class));
+ cards.add(new SetCardInfo("Undo", 47, Rarity.COMMON, mage.cards.u.Undo.class));
+ cards.add(new SetCardInfo("Urborg Mindsucker", 71, Rarity.COMMON, mage.cards.u.UrborgMindsucker.class));
+ cards.add(new SetCardInfo("Vampiric Tutor", 72, Rarity.RARE, mage.cards.v.VampiricTutor.class));
+ cards.add(new SetCardInfo("Vampirism", 73, Rarity.UNCOMMON, mage.cards.v.Vampirism.class));
+ cards.add(new SetCardInfo("Vanishing", 48, Rarity.COMMON, mage.cards.v.Vanishing.class));
+ cards.add(new SetCardInfo("Viashino Sandstalker", 100, Rarity.UNCOMMON, mage.cards.v.ViashinoSandstalker.class));
+ cards.add(new SetCardInfo("Viashivan Dragon", 140, Rarity.RARE, mage.cards.v.ViashivanDragon.class));
+ cards.add(new SetCardInfo("Vision Charm", 49, Rarity.COMMON, mage.cards.v.VisionCharm.class));
+ cards.add(new SetCardInfo("Wake of Vultures", 74, Rarity.COMMON, mage.cards.w.WakeOfVultures.class));
+ cards.add(new SetCardInfo("Wand of Denial", 159, Rarity.RARE, mage.cards.w.WandOfDenial.class));
+ cards.add(new SetCardInfo("Warrior's Honor", 24, Rarity.COMMON, mage.cards.w.WarriorsHonor.class));
+ cards.add(new SetCardInfo("Warthog", 124, Rarity.COMMON, mage.cards.w.Warthog.class));
+ cards.add(new SetCardInfo("Waterspout Djinn", 50, Rarity.UNCOMMON, mage.cards.w.WaterspoutDjinn.class));
+ cards.add(new SetCardInfo("Wicked Reward", 75, Rarity.COMMON, mage.cards.w.WickedReward.class));
+ cards.add(new SetCardInfo("Wind Shear", 125, Rarity.UNCOMMON, mage.cards.w.WindShear.class));
+ cards.add(new SetCardInfo("Zhalfirin Crusader", 25, Rarity.RARE, mage.cards.z.ZhalfirinCrusader.class));
+ }
+}
diff --git a/Mage.Stats/pom.xml b/Mage.Stats/pom.xml
index 086ecc8fa59..7c10572d3cf 100644
--- a/Mage.Stats/pom.xml
+++ b/Mage.Stats/pom.xml
@@ -43,13 +43,13 @@
net.minidev
json-smart
- 2.1.1
+ 2.3
org.aspectj
aspectjrt
- 1.8.2
+ 1.9.2
@@ -62,26 +62,26 @@
org.jboss.resteasy
resteasy-jaxrs
- 2.3.7.Final
+ 4.0.0.Beta5
provided
ch.qos.logback
logback-classic
- 1.2.3
+ 1.3.0-alpha4
org.apache.sling
org.apache.sling.commons.json
- 2.0.10
+ 2.0.20
org.jboss.resteasy
resteasy-multipart-provider
- 2.3.1.GA
+ 4.0.0.Beta8
@@ -93,19 +93,19 @@
commons-httpclient
commons-httpclient
- 3.1
+ 3.1-jbossorg-1
javax.servlet
servlet-api
- 2.5
+ 3.0-alpha-1
joda-time
joda-time
- 2.7
+ 2.10.1
diff --git a/Mage.Tests/pom.xml b/Mage.Tests/pom.xml
index 06830c290ef..39abb0fc86f 100644
--- a/Mage.Tests/pom.xml
+++ b/Mage.Tests/pom.xml
@@ -64,6 +64,17 @@
mage-game-freeforall
${project.version}
+
+ com.sun.xml.bind
+ jaxb-impl
+ 2.3.2
+
+
+
+ org.glassfish.jaxb
+ jaxb-runtime
+ 2.3.2
+
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/OfferingTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/OfferingTest.java
index a909755a9d9..37c9d12e65c 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/OfferingTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/OfferingTest.java
@@ -7,7 +7,7 @@ import org.mage.test.serverside.base.CardTestPlayerBase;
public class OfferingTest extends CardTestPlayerBase {
- private final static String nezumiPatron = "Patron of the Nezumi";
+ private static final String nezumiPatron = "Patron of the Nezumi";
@Test
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/asthough/CastFromLibraryTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/asthough/CastFromLibraryTest.java
index 6482f1731a0..63380c9cce5 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/asthough/CastFromLibraryTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/asthough/CastFromLibraryTest.java
@@ -1,4 +1,3 @@
-
package org.mage.test.cards.asthough;
import mage.constants.PhaseStep;
@@ -14,17 +13,16 @@ public class CastFromLibraryTest extends CardTestPlayerBase {
/**
* Any creature that you cast through Vizier of the Menagerie (ie the card
- * on top of your deck) is castable at instant speed. This means that they
+ * on top of your deck) is cast-able at instant speed. This means that they
* can be cast on your opponent's turn, before you scry (and thus change the
* top card), or even right before the Vizier gets destroyed by a fatal push
* or similar.
*/
@Test
- public void testVizierOfTheMenagerie() {
+ public void testVizierOfTheMenagerieWithGenericCreatures() {
addCard(Zone.BATTLEFIELD, playerA, "Forest", 8);
addCard(Zone.LIBRARY, playerA, "Silvercoat Lion", 2);
-
// You may look at the top card of your library. (You may do this at any time.)
// You may cast the top card of your library if it's a creature card.
// You may spend mana as though it were mana of any type to cast creature spells.
@@ -44,4 +42,28 @@ public class CastFromLibraryTest extends CardTestPlayerBase {
assertLibraryCount(playerA, "Silvercoat Lion", 1);
}
+
+ @Test
+ public void testVizierOfTheMenagerieWithDryadArbor() {
+ addCard(Zone.BATTLEFIELD, playerA, "Forest", 8);
+ addCard(Zone.LIBRARY, playerA, "Dryad Arbor", 2);
+ // You may look at the top card of your library. (You may do this at any time.)
+ // You may cast the top card of your library if it's a creature card.
+ // You may spend mana as though it were mana of any type to cast creature spells.
+ addCard(Zone.HAND, playerA, "Vizier of the Menagerie", 1); // Creature 3/4 {3}{G}
+
+ skipInitShuffling();
+
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Vizier of the Menagerie");
+ castSpell(1, PhaseStep.BEGIN_COMBAT, playerA, "Dryad Arbor");
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Dryad Arbor");
+
+ setStopAt(1, PhaseStep.END_TURN);
+ execute();
+
+ assertPermanentCount(playerA, "Vizier of the Menagerie", 1);
+ assertPermanentCount(playerA, "Dryad Arbor", 0); // can't be cast, only played
+ assertLibraryCount(playerA, "Dryad Arbor", 2);
+
+ }
}
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/PollutedBondsTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/PollutedBondsTest.java
new file mode 100644
index 00000000000..216e4403a32
--- /dev/null
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/PollutedBondsTest.java
@@ -0,0 +1,35 @@
+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;
+
+public class PollutedBondsTest extends CardTestPlayerBase {
+
+ final String pollutedBonds = "Polluted Bonds";
+
+ @Test
+ public void PollutedBondsSimple(){
+ addCard(Zone.BATTLEFIELD, playerA, pollutedBonds);
+ addCard(Zone.HAND, playerB, "Forest");
+ playLand(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Forest");
+ setStopAt(2, PhaseStep.POSTCOMBAT_MAIN);
+ execute();
+ assertAllCommandsUsed();
+ assertLife(playerA, 22);
+ assertLife(playerB, 18);
+ }
+
+ @Test
+ public void PollutedBondsOwnLand(){
+ addCard(Zone.BATTLEFIELD, playerA, pollutedBonds);
+ addCard(Zone.HAND, playerA, "Forest");
+ playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Forest");
+ setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
+ execute();
+ assertAllCommandsUsed();
+ assertLife(playerA, 20);
+ assertLife(playerB, 20);
+ }
+}
diff --git a/Mage.Tests/src/test/java/org/mage/test/player/RandomPlayer.java b/Mage.Tests/src/test/java/org/mage/test/player/RandomPlayer.java
index 32be590187e..2e59c4e012b 100644
--- a/Mage.Tests/src/test/java/org/mage/test/player/RandomPlayer.java
+++ b/Mage.Tests/src/test/java/org/mage/test/player/RandomPlayer.java
@@ -232,7 +232,7 @@ public class RandomPlayer extends ComputerPlayer {
}
}
if (possibleTargets.size() == 1) {
- target.addTarget(possibleTargets.iterator().next(), source, game);
+ target.addTarget(possibleTargets.iterator().next(), source, game); // todo: addtryaddtarget or return type (see computerPlayer)
return true;
}
Iterator it = possibleTargets.iterator();
@@ -241,7 +241,7 @@ public class RandomPlayer extends ComputerPlayer {
for (int i = 0; i < targetNum; i++) {
targetId = it.next();
}
- target.addTarget(targetId, source, game);
+ target.addTarget(targetId, source, game); // todo: addtryaddtarget or return type (see computerPlayer)
return true;
}
@@ -286,7 +286,7 @@ public class RandomPlayer extends ComputerPlayer {
}
Card card = cards.getRandom(game);
if (card != null) {
- target.addTarget(card.getId(), source, game);
+ target.addTarget(card.getId(), source, game); // todo: addtryaddtarget or return type (see computerPlayer)
return true;
}
return false;
@@ -304,7 +304,7 @@ public class RandomPlayer extends ComputerPlayer {
}
}
if (possibleTargets.size() == 1) {
- target.addTarget(possibleTargets.iterator().next(), target.getAmountRemaining(), source, game);
+ target.addTarget(possibleTargets.iterator().next(), target.getAmountRemaining(), source, game); // todo: addtryaddtarget or return type (see computerPlayer)
return true;
}
Iterator it = possibleTargets.iterator();
@@ -313,7 +313,7 @@ public class RandomPlayer extends ComputerPlayer {
for (int i = 0; i < targetNum; i++) {
targetId = it.next();
}
- target.addTarget(targetId, RandomUtil.nextInt(target.getAmountRemaining()) + 1, source, game);
+ target.addTarget(targetId, RandomUtil.nextInt(target.getAmountRemaining()) + 1, source, game); // todo: addtryaddtarget or return type (see computerPlayer)
return true;
}
diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java b/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java
index eba6b674384..a2c8e5f1b23 100644
--- a/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java
@@ -29,7 +29,7 @@ import java.util.Locale;
*/
public class PlayGameTest extends MageTestBase {
- private final static List colorChoices = new ArrayList<>(Arrays.asList("bu", "bg", "br", "bw", "ug", "ur", "uw", "gr", "gw", "rw", "bur", "buw", "bug", "brg", "brw", "bgw", "wur", "wug", "wrg", "rgu"));
+ private static final List colorChoices = new ArrayList<>(Arrays.asList("bu", "bg", "br", "bw", "ug", "ur", "uw", "gr", "gw", "rw", "bur", "buw", "bug", "brg", "brw", "bgw", "wur", "wug", "wrg", "rgu"));
@Ignore
@Test
diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/TestPlayRandomGame.java b/Mage.Tests/src/test/java/org/mage/test/serverside/TestPlayRandomGame.java
index c36b59a1081..644c9fed18e 100644
--- a/Mage.Tests/src/test/java/org/mage/test/serverside/TestPlayRandomGame.java
+++ b/Mage.Tests/src/test/java/org/mage/test/serverside/TestPlayRandomGame.java
@@ -28,7 +28,7 @@ import java.util.Locale;
*/
public class TestPlayRandomGame extends MageTestBase {
- private final static List colorChoices = new ArrayList<>(Arrays.asList("bu", "bg", "br", "bw", "ug", "ur", "uw", "gr", "gw", "rw", "bur", "buw", "bug", "brg", "brw", "bgw", "wur", "wug", "wrg", "rgu"));
+ private static final List colorChoices = new ArrayList<>(Arrays.asList("bu", "bg", "br", "bw", "ug", "ur", "uw", "gr", "gw", "rw", "bur", "buw", "bug", "brg", "brw", "bgw", "wur", "wug", "wrg", "rgu"));
@Test
@Ignore
diff --git a/Mage.Updater/pom.xml b/Mage.Updater/pom.xml
index f4d46c76553..0a9fc2b7bc2 100644
--- a/Mage.Updater/pom.xml
+++ b/Mage.Updater/pom.xml
@@ -9,7 +9,6 @@
4.0.0
- org.mage
mage-updater
Mage Updater
diff --git a/Mage/pom.xml b/Mage/pom.xml
index 981365c3eea..80815f55ace 100644
--- a/Mage/pom.xml
+++ b/Mage/pom.xml
@@ -23,13 +23,13 @@
com.h2database
h2
- 1.4.187
+ 1.4.197
runtime
com.j256.ormlite
ormlite-jdbc
- 4.48
+ 5.1
junit
@@ -38,7 +38,7 @@
com.google.protobuf
protobuf-java
- 3.6.0
+ 3.7.0-rc1
@@ -105,10 +105,6 @@
-
-
-
-
mage
diff --git a/Mage/src/main/java/mage/abilities/common/DiesCreatureTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/DiesCreatureTriggeredAbility.java
index 987c13eb7f1..a30e474108e 100644
--- a/Mage/src/main/java/mage/abilities/common/DiesCreatureTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/DiesCreatureTriggeredAbility.java
@@ -68,7 +68,7 @@ public class DiesCreatureTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
if (filter.match(zEvent.getTarget(), sourceId, controllerId, game) && zEvent.getTarget().isCreature()) {
if (setTargetPointer) {
for (Effect effect : this.getEffects()) {
diff --git a/Mage/src/main/java/mage/abilities/common/DiesThisOrAnotherCreatureTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/DiesThisOrAnotherCreatureTriggeredAbility.java
index 0173c913550..c0d241039de 100644
--- a/Mage/src/main/java/mage/abilities/common/DiesThisOrAnotherCreatureTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/DiesThisOrAnotherCreatureTriggeredAbility.java
@@ -66,7 +66,7 @@ public class DiesThisOrAnotherCreatureTriggeredAbility extends TriggeredAbilityI
return false;
}
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
if (zEvent.getTarget() != null) {
if (zEvent.getTarget().getId().equals(this.getSourceId())) {
return true;
diff --git a/Mage/src/main/java/mage/abilities/common/EntersBattlefieldOrDiesSourceTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/EntersBattlefieldOrDiesSourceTriggeredAbility.java
index d0db65728b1..1c36a79de9b 100644
--- a/Mage/src/main/java/mage/abilities/common/EntersBattlefieldOrDiesSourceTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/EntersBattlefieldOrDiesSourceTriggeredAbility.java
@@ -43,7 +43,7 @@ public class EntersBattlefieldOrDiesSourceTriggeredAbility extends TriggeredAbil
}
if (event.getType() == EventType.ZONE_CHANGE && event.getTargetId().equals(this.getSourceId())) {
ZoneChangeEvent zEvent = (ZoneChangeEvent)event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
return true;
}
}
diff --git a/Mage/src/main/java/mage/abilities/common/FetchLandActivatedAbility.java b/Mage/src/main/java/mage/abilities/common/FetchLandActivatedAbility.java
index 40a620f5e82..fa71efebee9 100644
--- a/Mage/src/main/java/mage/abilities/common/FetchLandActivatedAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/FetchLandActivatedAbility.java
@@ -22,6 +22,7 @@ import mage.target.common.TargetCardInLibrary;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import java.util.stream.Collectors;
/**
*
@@ -51,16 +52,12 @@ public class FetchLandActivatedAbility extends ActivatedAbilityImpl {
addEffect(new SearchLibraryPutInPlayEffect(target, false, true, Outcome.PutLandInPlay));
}
- public FetchLandActivatedAbility(FetchLandActivatedAbility ability) {
+ private FetchLandActivatedAbility(FetchLandActivatedAbility ability) {
super(ability);
}
private String subTypeNames(Set subTypes) {
- StringBuilder sb = new StringBuilder();
- for (SubType subType: subTypes) {
- sb.append(subType.getDescription()).append(" or ");
- }
- return sb.substring(0, sb.length() - 4);
+ return subTypes.stream().map(SubType::getDescription).collect(Collectors.joining(" or "));
}
@Override
diff --git a/Mage/src/main/java/mage/abilities/common/LeavesBattlefieldAllTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/LeavesBattlefieldAllTriggeredAbility.java
index 8757d62401a..7ce2028a917 100644
--- a/Mage/src/main/java/mage/abilities/common/LeavesBattlefieldAllTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/LeavesBattlefieldAllTriggeredAbility.java
@@ -40,7 +40,7 @@ public class LeavesBattlefieldAllTriggeredAbility extends TriggeredAbilityImpl {
this.setTargetPointer = setTargetPointer;
}
- public LeavesBattlefieldAllTriggeredAbility(final LeavesBattlefieldAllTriggeredAbility ability) {
+ private LeavesBattlefieldAllTriggeredAbility(final LeavesBattlefieldAllTriggeredAbility ability) {
super(ability);
filter = ability.filter;
setTargetPointer = ability.setTargetPointer;
diff --git a/Mage/src/main/java/mage/abilities/common/PutIntoGraveFromBattlefieldAllTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/PutIntoGraveFromBattlefieldAllTriggeredAbility.java
index df73e1f2efa..5b147df11dd 100644
--- a/Mage/src/main/java/mage/abilities/common/PutIntoGraveFromBattlefieldAllTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/PutIntoGraveFromBattlefieldAllTriggeredAbility.java
@@ -48,8 +48,7 @@ public class PutIntoGraveFromBattlefieldAllTriggeredAbility extends TriggeredAbi
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD
- && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
if (filter.match(zEvent.getTarget(), this.getSourceId(), this.getControllerId(), game)) {
if (onlyToControllerGraveyard && !this.isControlledBy(game.getOwnerId(zEvent.getTargetId()))) {
return false;
diff --git a/Mage/src/main/java/mage/abilities/costs/mana/ManaSymbols.java b/Mage/src/main/java/mage/abilities/costs/mana/ManaSymbols.java
index 42dde43669e..877d21c55bd 100644
--- a/Mage/src/main/java/mage/abilities/costs/mana/ManaSymbols.java
+++ b/Mage/src/main/java/mage/abilities/costs/mana/ManaSymbols.java
@@ -17,7 +17,7 @@ import java.util.Map;
*/
public class ManaSymbols extends ArrayList {
- private final static Map coloredManaMap = new EnumMap(ColoredManaSymbol.class) {{
+ private static final Map coloredManaMap = new EnumMap(ColoredManaSymbol.class) {{
put(ColoredManaSymbol.W, ManaSymbol.W);
put(ColoredManaSymbol.U, ManaSymbol.U);
put(ColoredManaSymbol.B, ManaSymbol.B);
@@ -29,7 +29,7 @@ public class ManaSymbols extends ArrayList {
* Contains all possible hybrid mana costs (each represents different hybrid mana symbol)
* We'll use it for converting from hybrid mana cost to hybrid mana symbol.
*/
- private final static Map hybridManaMap = new EnumMap(ManaSymbol.class) {{
+ private static final Map hybridManaMap = new EnumMap(ManaSymbol.class) {{
/**
* Build map of all possible hybrid mana symbols assigning corresponding instance of hybrid mana cost.
diff --git a/Mage/src/main/java/mage/abilities/effects/common/SkipNextDrawStepTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/SkipNextDrawStepTargetEffect.java
index 2f1ba7d187e..e0d819beaff 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/SkipNextDrawStepTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/SkipNextDrawStepTargetEffect.java
@@ -21,7 +21,7 @@ public class SkipNextDrawStepTargetEffect extends ReplacementEffectImpl {
public SkipNextDrawStepTargetEffect() {
super(Duration.OneUse, Outcome.Detriment);
- staticText = "Target player skips his or her next draw step";
+ staticText = "Target player skips their next draw step";
}
public SkipNextDrawStepTargetEffect(final SkipNextDrawStepTargetEffect effect) {
diff --git a/Mage/src/main/java/mage/abilities/keyword/AdaptAbility.java b/Mage/src/main/java/mage/abilities/keyword/AdaptAbility.java
index 634c38bd4df..65d037d8c15 100644
--- a/Mage/src/main/java/mage/abilities/keyword/AdaptAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/AdaptAbility.java
@@ -16,7 +16,7 @@ public class AdaptAbility extends ActivatedAbilityImpl {
super(Zone.BATTLEFIELD, new AdaptEffect(adaptNumber), new ManaCostsImpl(manaCost));
}
- public AdaptAbility(final AdaptAbility ability) {
+ private AdaptAbility(final AdaptAbility ability) {
super(ability);
}
diff --git a/Mage/src/main/java/mage/abilities/keyword/BountyAbility.java b/Mage/src/main/java/mage/abilities/keyword/BountyAbility.java
index e41e160ec75..0879c6608b6 100644
--- a/Mage/src/main/java/mage/abilities/keyword/BountyAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/BountyAbility.java
@@ -19,23 +19,23 @@ import mage.filter.predicate.permanent.CounterPredicate;
*/
public class BountyAbility extends DiesCreatureTriggeredAbility {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls with a bounty counter on it");
+ private static final FilterCreaturePermanent bountyCounterFilter = new FilterCreaturePermanent("creature an opponent controls with a bounty counter on it");
static {
- filter.add(new ControllerPredicate(TargetController.OPPONENT));
- filter.add(new CounterPredicate(CounterType.BOUNTY));
+ bountyCounterFilter.add(new ControllerPredicate(TargetController.OPPONENT));
+ bountyCounterFilter.add(new CounterPredicate(CounterType.BOUNTY));
}
public BountyAbility(Effect effect) {
- super(effect, false, filter);
+ super(effect, false, bountyCounterFilter);
}
public BountyAbility(Effect effect, boolean optional) {
- super(effect, optional, filter);
+ super(effect, optional, bountyCounterFilter);
}
public BountyAbility(Effect effect, boolean optional, boolean setTargetPointer) {
- super(effect, optional, filter, setTargetPointer);
+ super(effect, optional, bountyCounterFilter, setTargetPointer);
}
public BountyAbility(final BountyAbility ability) {
diff --git a/Mage/src/main/java/mage/abilities/keyword/CascadeAbility.java b/Mage/src/main/java/mage/abilities/keyword/CascadeAbility.java
index b803f8e7c4a..3f44a43db90 100644
--- a/Mage/src/main/java/mage/abilities/keyword/CascadeAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/CascadeAbility.java
@@ -20,7 +20,7 @@ import mage.players.Player;
public class CascadeAbility extends TriggeredAbilityImpl {
//20091005 - 702.82
- private final static String REMINDERTEXT = " (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less."
+ private static final String REMINDERTEXT = " (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.)";
private boolean withReminder;
diff --git a/Mage/src/main/java/mage/abilities/keyword/HauntAbility.java b/Mage/src/main/java/mage/abilities/keyword/HauntAbility.java
index 9e08681fb94..71297bc8930 100644
--- a/Mage/src/main/java/mage/abilities/keyword/HauntAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/HauntAbility.java
@@ -110,8 +110,8 @@ public class HauntAbility extends TriggeredAbilityImpl {
class HauntExileAbility extends ZoneChangeTriggeredAbility {
- private final static String RULE_TEXT_CREATURE = "Haunt (When this creature dies, exile it haunting target creature.)";
- private final static String RULE_TEXT_SPELL = "Haunt (When this spell card is put into a graveyard after resolving, exile it haunting target creature.)";
+ private static final String RULE_TEXT_CREATURE = "Haunt (When this creature dies, exile it haunting target creature.)";
+ private static final String RULE_TEXT_SPELL = "Haunt (When this spell card is put into a graveyard after resolving, exile it haunting target creature.)";
private boolean creatureHaunt;
diff --git a/Mage/src/main/java/mage/abilities/keyword/RecoverAbility.java b/Mage/src/main/java/mage/abilities/keyword/RecoverAbility.java
index c6bac07f934..25f309b6b55 100644
--- a/Mage/src/main/java/mage/abilities/keyword/RecoverAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/RecoverAbility.java
@@ -48,7 +48,7 @@ public class RecoverAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
+ if (zEvent.isDiesEvent()) {
if (zEvent.getTarget().isOwnedBy(getControllerId())
&& zEvent.getTarget().isCreature()
&& !zEvent.getTarget().getId().equals(getSourceId())) {
diff --git a/Mage/src/main/java/mage/abilities/keyword/SoulbondAbility.java b/Mage/src/main/java/mage/abilities/keyword/SoulbondAbility.java
index e2b3cba0b4e..db7dc45be6e 100644
--- a/Mage/src/main/java/mage/abilities/keyword/SoulbondAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/SoulbondAbility.java
@@ -168,7 +168,7 @@ class SoulboundEntersSelfEffect extends OneShotEffect {
*/
class SoulbondEntersOtherAbility extends EntersBattlefieldAllTriggeredAbility {
- private final static FilterCreaturePermanent soulbondFilter = new FilterCreaturePermanent();
+ private static final FilterCreaturePermanent soulbondFilter = new FilterCreaturePermanent();
static {
soulbondFilter.add(Predicates.not(new PairedPredicate()));
diff --git a/Mage/src/main/java/mage/abilities/keyword/SunburstAbility.java b/Mage/src/main/java/mage/abilities/keyword/SunburstAbility.java
index 434b57f96a2..aa03cf95792 100644
--- a/Mage/src/main/java/mage/abilities/keyword/SunburstAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/SunburstAbility.java
@@ -22,8 +22,8 @@ import mage.players.Player;
*/
public class SunburstAbility extends EntersBattlefieldAbility {
- private final static String ruleCreature = "Sunburst (This enters the battlefield with a +1/+1 counter on it for each color of mana spent to cast it.)";
- private final static String ruleNonCreature = "Sunburst (This enters the battlefield with a charge counter on it for each color of mana spent to cast it.)";
+ private static final String ruleCreature = "Sunburst (This enters the battlefield with a +1/+1 counter on it for each color of mana spent to cast it.)";
+ private static final String ruleNonCreature = "Sunburst (This enters the battlefield with a charge counter on it for each color of mana spent to cast it.)";
private boolean isCreature;
public SunburstAbility(Card card) {
diff --git a/Mage/src/main/java/mage/cards/ExpansionSet.java b/Mage/src/main/java/mage/cards/ExpansionSet.java
index bc0bdc90593..688538ae18c 100644
--- a/Mage/src/main/java/mage/cards/ExpansionSet.java
+++ b/Mage/src/main/java/mage/cards/ExpansionSet.java
@@ -23,8 +23,8 @@ import java.util.stream.Collectors;
public abstract class ExpansionSet implements Serializable {
private static final Logger logger = Logger.getLogger(ExpansionSet.class);
- public final static CardGraphicInfo NON_FULL_USE_VARIOUS = new CardGraphicInfo(null, true);
- public final static CardGraphicInfo FULL_ART_BFZ_VARIOUS = new CardGraphicInfo(FrameStyle.BFZ_FULL_ART_BASIC, true);
+ public static final CardGraphicInfo NON_FULL_USE_VARIOUS = new CardGraphicInfo(null, true);
+ public static final CardGraphicInfo FULL_ART_BFZ_VARIOUS = new CardGraphicInfo(FrameStyle.BFZ_FULL_ART_BASIC, true);
public class SetCardInfo implements Serializable {
diff --git a/Mage/src/main/java/mage/cards/repository/CardRepository.java b/Mage/src/main/java/mage/cards/repository/CardRepository.java
index 65cf3baa8a6..8eb0b50093d 100644
--- a/Mage/src/main/java/mage/cards/repository/CardRepository.java
+++ b/Mage/src/main/java/mage/cards/repository/CardRepository.java
@@ -329,7 +329,9 @@ public enum CardRepository {
public CardInfo findCard(String setCode, String cardNumber) {
try {
QueryBuilder queryBuilder = cardDao.queryBuilder();
- queryBuilder.limit(1L).where().eq("setCode", new SelectArg(setCode)).and().eq("cardNumber", cardNumber).and().eq("nightCard", false);
+ queryBuilder.limit(1L).where().eq("setCode", new SelectArg(setCode))
+ .and().eq("cardNumber", new SelectArg(cardNumber))
+ .and().eq("nightCard", new SelectArg(false));
List