diff --git a/src/main/java/forge/AllZoneUtil.java b/src/main/java/forge/AllZoneUtil.java
index d1b5e56785d..50d0361ec50 100644
--- a/src/main/java/forge/AllZoneUtil.java
+++ b/src/main/java/forge/AllZoneUtil.java
@@ -17,16 +17,6 @@
*/
package forge;
-import java.util.ArrayList;
-import java.util.List;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-
-import forge.CardPredicates.Presets;
-import forge.game.player.Player;
-import forge.game.zone.ZoneType;
-
/**
* AllZoneUtil contains static functions used to get CardLists of various cards
@@ -39,97 +29,15 @@ public abstract class AllZoneUtil {
// ////////// Creatures
- /**
- * gets a list of all cards owned by both players that have are currently in
- * the given zone.
- *
- * @param zone
- * Constant.Zone
- * @return a List with all cards currently in a graveyard
- */
- public static List getCardsIn(final ZoneType zone) {
- if (zone == ZoneType.Stack) {
- return AllZone.getStackZone().getCards();
- } else {
- List cards = null;
- for (final Player p : Singletons.getModel().getGameState().getPlayers()) {
- if ( cards == null )
- cards = p.getZone(zone).getCards();
- else
- cards.addAll(p.getZone(zone).getCards());
- }
- return cards;
- }
- }
-
- public static List getCardsIn(final Iterable zones) {
- final List cards = new ArrayList();
- for (final ZoneType z : zones) {
- cards.addAll(getCardsIn(z));
- }
- return cards;
- }
-
- /**
- * gets a list of all cards owned by both players that have are currently in
- * the given zone.
- *
- * @param zone
- * a Constant.Zone
- * @param cardName
- * a String
- * @return a List with all cards currently in a graveyard
- */
- public static List getCardsIn(final ZoneType zone, final String cardName) {
- return CardLists.filter(AllZoneUtil.getCardsIn(zone), CardPredicates.nameEquals(cardName));
- }
+
// ////////// Creatures
- /**
- * use to get a List of all creatures on the battlefield for both.
- * players
- *
- * @return a List of all creatures on the battlefield on both sides
- */
- public static List getCreaturesInPlay() {
- final List creats = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
- return CardLists.filter(creats, Presets.CREATURES);
- }
-
- /**
- * use to get a list of creatures in play for a given player.
- *
- * @param player
- * the player to get creatures for
- * @return a List containing all creatures a given player has in play
- */
- public static List getCreaturesInPlay(final Player player) {
- final List creats = player.getCardsIn(ZoneType.Battlefield);
- return CardLists.filter(creats, Presets.CREATURES);
- }
+
// /////////////// Lands
- /**
- * use to get a list of all lands a given player has on the battlefield.
- *
- * @param player
- * the player whose lands we want to get
- * @return a List containing all lands the given player has in play
- */
- public static List getPlayerLandsInPlay(final Player player) {
- return CardLists.filter(player.getCardsIn(ZoneType.Battlefield), Presets.LANDS);
- }
-
- /**
- * gets a list of all lands in play.
- *
- * @return a List of all lands on the battlefield
- */
- public static List getLandsInPlay() {
- return CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Battlefield), Presets.LANDS);
- }
+
// =============================================================================
//
@@ -138,229 +46,10 @@ public abstract class AllZoneUtil {
//
// =============================================================================
- /**
- * answers the question "is the given card in any exile zone?".
- *
- * @param c
- * the card to look for in Exile
- * @return true is the card is in Human or Computer's Exile zone
- */
- public static boolean isCardExiled(final Card c) {
- return AllZoneUtil.getCardsIn(ZoneType.Exile).contains(c);
- }
-
- // /Check if a certain card is in play
- /**
- *
- * isCardInPlay.
- *
- *
- * @param card
- * a {@link forge.Card} object.
- * @return a boolean.
- */
- public static boolean isCardInPlay(final Card card) {
- if (card.getController() == null) {
- return false;
- }
- return card.getController().getCardsIn(ZoneType.Battlefield).contains(card);
- }
-
- /**
- * Answers the question: "Is in play?".
- *
- * @param cardName
- * the name of the card to look for
- * @return true is the card is in play, false otherwise
- */
- public static boolean isCardInPlay(final String cardName) {
- for (final Player p : Singletons.getModel().getGameState().getPlayers()) {
- if (isCardInPlay(cardName, p))
- return true;
- }
- return false;
- }
-
- /**
- * Answers the question: "Does have in play?".
- *
- * @param cardName
- * the name of the card to look for
- * @param player
- * the player whose battlefield we want to check
- * @return true if that player has that card in play, false otherwise
- */
- public static boolean isCardInPlay(final String cardName, final Player player) {
- return Iterables.any(player.getZone(ZoneType.Battlefield), CardPredicates.nameEquals(cardName));
- }
+
// ////////////// getting all cards of a given color
- /**
- * gets a list of all Cards of a given color on the battlefield.
- *
- * @param color
- * the color of cards to get
- * @return a List of all cards in play of a given color
- */
- public static List getColorInPlay(final String color) {
- final List cards = new ArrayList();
- for(Player p : Singletons.getModel().getGameState().getPlayers()) {
- cards.addAll(getPlayerColorInPlay(p, color));
- }
- return cards;
- }
-
- /**
- * gets a list of all Cards of a given color a given player has on the
- * battlefield.
- *
- * @param player
- * the player's cards to get
- * @param color
- * the color of cards to get
- * @return a List of all cards in play of a given color
- */
- public static List getPlayerColorInPlay(final Player player, final String color) {
- List cards = player.getCardsIn(ZoneType.Battlefield);
- cards = CardLists.filter(cards, new Predicate() {
- @Override
- public boolean apply(final Card c) {
- final List colorList = CardUtil.getColors(c);
- return colorList.contains(color);
- }
- });
- return cards;
- }
-
- /**
- *
- * getCardState.
- *
- *
- * @param card
- * a {@link forge.Card} object.
- * @return a {@link forge.Card} object.
- */
- public static Card getCardState(final Card card) {
-
- for (final Card c : AllZoneUtil.getCardsInGame()) {
- if (card.equals(c)) {
- return c;
- }
- }
-
- return card;
- }
-
- /**
- *
- * compareTypeAmountInPlay.
- *
- *
- * @param player
- * a {@link forge.game.player.Player} object.
- * @param type
- * a {@link java.lang.String} object.
- * @return a int.
- */
- public static int compareTypeAmountInPlay(final Player player, final String type) {
- // returns the difference between player's
- final Player opponent = player.getOpponent();
- final List playerList = CardLists.getType(player.getCardsIn(ZoneType.Battlefield), type);
- final List opponentList = CardLists.getType(opponent.getCardsIn(ZoneType.Battlefield), type);
- return (playerList.size() - opponentList.size());
- }
-
- /**
- *
- * compareTypeAmountInGraveyard.
- *
- *
- * @param player
- * a {@link forge.game.player.Player} object.
- * @param type
- * a {@link java.lang.String} object.
- * @return a int.
- */
- public static int compareTypeAmountInGraveyard(final Player player, final String type) {
- // returns the difference between player's
- final Player opponent = player.getOpponent();
- final List playerList = CardLists.getType(player.getCardsIn(ZoneType.Graveyard), type);
- final List opponentList = CardLists.getType(opponent.getCardsIn(ZoneType.Graveyard), type);
- return (playerList.size() - opponentList.size());
- }
-
- /**
- * a CardListFilter to get all cards that are a part of this game.
- *
- * @return a {@link forge.CardList} with all cards in all Battlefields,
- * Hands, Graveyards, Libraries, and Exiles.
- */
- public static List getCardsInGame() {
- final List all = new ArrayList();
- for (final Player player : Singletons.getModel().getGameState().getPlayers()) {
- all.addAll(player.getZone(ZoneType.Graveyard).getCards());
- all.addAll(player.getZone(ZoneType.Hand).getCards());
- all.addAll(player.getZone(ZoneType.Library).getCards());
- all.addAll(player.getZone(ZoneType.Battlefield).getCards(false));
- all.addAll(player.getZone(ZoneType.Exile).getCards());
- }
- all.addAll(AllZone.getStackZone().getCards());
- return all;
- }
-
- /**
- *
- * getDoublingSeasonMagnitude.
- *
- *
- * @param player
- * the {@link forge.game.player.Player} player to determine if is affected by
- * Doubling Season
- * @return a int.
- */
- public static int getCounterDoublersMagnitude(final Player player, Counters type) {
- int counterDoublers = player.getCardsIn(ZoneType.Battlefield, "Doubling Season").size();
- if(type == Counters.P1P1) {
- counterDoublers += player.getCardsIn(ZoneType.Battlefield, "Corpsejack Menace").size();
- }
- return (int) Math.pow(2, counterDoublers); // pow(a,0) = 1; pow(a,1) = a
- // ... no worries about size
- // = 0
- }
-
- /**
- *
- * getTokenDoublersMagnitude.
- *
- *
- * @param player
- * the {@link forge.game.player.Player} player to determine if is affected by
- * Doubling Season
- * @return a int.
- */
- public static int getTokenDoublersMagnitude(final Player player) {
- final int tokenDoublers = player.getCardsIn(ZoneType.Battlefield, "Parallel Lives").size()
- + player.getCardsIn(ZoneType.Battlefield, "Doubling Season").size();
- return (int) Math.pow(2, tokenDoublers); // pow(a,0) = 1; pow(a,1) = a
- // ... no worries about size =
- // 0
- }
-
- /**
- * gets a list of all opponents of a given player.
- *
- * @param p
- * the player whose opponents to get
- * @return a list of all opponents
- */
- public static ArrayList getOpponents(final Player p) {
- final ArrayList list = new ArrayList();
- list.add(p.getOpponent());
- return list;
- }
-
/**
*
* compare.
diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java
index c02220f4c95..fd4bc18d5e1 100644
--- a/src/main/java/forge/Card.java
+++ b/src/main/java/forge/Card.java
@@ -53,6 +53,7 @@ import forge.card.staticability.StaticAbility;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerType;
import forge.card.trigger.ZCTrigger;
+import forge.game.GameState;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
@@ -1224,7 +1225,7 @@ public class Card extends GameEntity implements Comparable {
return false;
}
if (this.isCreature() && counterName.equals(Counters.M1M1)) {
- for (final Card c : AllZoneUtil.getCreaturesInPlay(this.getController())) { // look
+ for (final Card c : GameState.getCreaturesInPlay(this.getController())) { // look
// for
// Melira,
// Sylvok
@@ -1285,7 +1286,7 @@ public class Card extends GameEntity implements Comparable {
if (!this.canHaveCountersPlacedOnIt(counterName)) {
return;
}
- final int multiplier = AllZoneUtil.getCounterDoublersMagnitude(this.getController(),counterName);
+ final int multiplier = GameState.getCounterDoublersMagnitude(this.getController(),counterName);
if (this.counters.containsKey(counterName)) {
final Integer aux = this.counters.get(counterName) + (multiplier * n);
this.counters.put(counterName, aux);
@@ -1333,11 +1334,11 @@ public class Card extends GameEntity implements Comparable {
if (counterName.equals(Counters.TIME) && (aux == 0)) {
final boolean hasVanish = CardFactoryUtil.hasKeyword(this, "Vanishing") != -1;
- if (hasVanish && AllZoneUtil.isCardInPlay(this)) {
+ if (hasVanish && GameState.isCardInPlay(this)) {
Singletons.getModel().getGameAction().sacrifice(this, null);
}
- if (this.hasSuspend() && AllZoneUtil.isCardExiled(this)) {
+ if (this.hasSuspend() && GameState.isCardExiled(this)) {
final Card c = this;
c.setSuspendCast(true);
@@ -4751,7 +4752,7 @@ public class Card extends GameEntity implements Comparable {
return 0;
}
- if (AllZoneUtil.isCardInPlay("Doran, the Siege Tower")) {
+ if (GameState.isCardInPlay("Doran, the Siege Tower")) {
return this.getNetDefense();
}
return this.getNetAttack();
@@ -6489,7 +6490,7 @@ public class Card extends GameEntity implements Comparable {
}
} else if (property.startsWith("RememberedPlayerCtrl")) {
if (source.getRemembered().isEmpty()) {
- final Card newCard = AllZoneUtil.getCardState(source);
+ final Card newCard = GameState.getCardState(source);
for (final Object o : newCard.getRemembered()) {
if (o instanceof Player) {
if (!this.getController().equals((Player) o)) {
@@ -6722,7 +6723,7 @@ public class Card extends GameEntity implements Comparable {
}
} else if (restriction.equals("MostProminentColor")) {
for (final String color : CardUtil.getColors(this)) {
- if (CardFactoryUtil.isMostProminentColor(AllZoneUtil.getCardsIn(ZoneType.Battlefield), color)) {
+ if (CardFactoryUtil.isMostProminentColor(GameState.getCardsIn(ZoneType.Battlefield), color)) {
return true;
}
}
@@ -6811,12 +6812,12 @@ public class Card extends GameEntity implements Comparable {
return false;
}
} else if (restriction.equals(ZoneType.Battlefield.toString())) {
- final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ final List list = GameState.getCardsIn(ZoneType.Battlefield);
if (list.isEmpty()) {
return false;
}
boolean shares = false;
- for (final Card card : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) {
+ for (final Card card : GameState.getCardsIn(ZoneType.Battlefield)) {
if (this.getName().equals(card.getName())) {
shares = true;
}
@@ -6984,28 +6985,28 @@ public class Card extends GameEntity implements Comparable {
return false;
}
} else if (property.startsWith("greatestPower")) {
- final List list = AllZoneUtil.getCreaturesInPlay();
+ final List list = GameState.getCreaturesInPlay();
for (final Card crd : list) {
if (crd.getNetAttack() > this.getNetAttack()) {
return false;
}
}
} else if (property.startsWith("leastPower")) {
- final List list = AllZoneUtil.getCreaturesInPlay();
+ final List list = GameState.getCreaturesInPlay();
for (final Card crd : list) {
if (crd.getNetAttack() < this.getNetAttack()) {
return false;
}
}
} else if (property.startsWith("greatestCMC")) {
- final List list = AllZoneUtil.getCreaturesInPlay();
+ final List list = GameState.getCreaturesInPlay();
for (final Card crd : list) {
if (crd.getCMC() > this.getCMC()) {
return false;
}
}
} else if (property.startsWith("lowestCMC")) {
- final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ final List list = GameState.getCardsIn(ZoneType.Battlefield);
for (final Card crd : list) {
if (!crd.isLand() && !crd.isImmutable() && (crd.getCMC() < this.getCMC())) {
return false;
@@ -7050,7 +7051,7 @@ public class Card extends GameEntity implements Comparable {
}
}
} else if (property.startsWith("suspended")) {
- if (!this.hasSuspend() || !AllZoneUtil.isCardExiled(this)
+ if (!this.hasSuspend() || !GameState.isCardExiled(this)
|| !(this.getCounters(Counters.getType("TIME")) >= 1)) {
return false;
}
@@ -7271,7 +7272,7 @@ public class Card extends GameEntity implements Comparable {
return false;
}
} else if (property.startsWith("OnBattlefield")) {
- final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ final List list = GameState.getCardsIn(ZoneType.Battlefield);
if (!list.contains(this)) {
return false;
}
@@ -7950,7 +7951,7 @@ public class Card extends GameEntity implements Comparable {
map.put(source, damageToAdd);
}
- if (AllZoneUtil.isCardInPlay(this)) {
+ if (GameState.isCardInPlay(this)) {
this.addDamage(map);
}
}
@@ -8004,7 +8005,7 @@ public class Card extends GameEntity implements Comparable {
public final int staticDamagePrevention(final int damage, final int possiblePrvenetion, final Card source,
final boolean isCombat) {
- if (AllZoneUtil.isCardInPlay("Leyline of Punishment")) {
+ if (GameState.isCardInPlay("Leyline of Punishment")) {
return damage;
}
@@ -8033,7 +8034,7 @@ public class Card extends GameEntity implements Comparable {
@Override
public final int staticDamagePrevention(final int damageIn, final Card source, final boolean isCombat) {
- if (AllZoneUtil.isCardInPlay("Leyline of Punishment")) {
+ if (GameState.isCardInPlay("Leyline of Punishment")) {
return damageIn;
}
@@ -8096,7 +8097,7 @@ public class Card extends GameEntity implements Comparable {
}
// Prevent Damage static abilities
- final List allp = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ final List allp = GameState.getCardsIn(ZoneType.Battlefield);
for (final Card ca : allp) {
final ArrayList staticAbilities = ca.getStaticAbilities();
for (final StaticAbility stAb : staticAbilities) {
@@ -8110,7 +8111,7 @@ public class Card extends GameEntity implements Comparable {
return 0;
}
- if ((source.isCreature() && AllZoneUtil.isCardInPlay("Well-Laid Plans") && source.sharesColorWith(this))) {
+ if ((source.isCreature() && GameState.isCardInPlay("Well-Laid Plans") && source.sharesColorWith(this))) {
return 0;
}
} // Creature end
@@ -8138,7 +8139,7 @@ public class Card extends GameEntity implements Comparable {
@Override
public final int preventDamage(final int damage, final Card source, final boolean isCombat) {
- if (AllZoneUtil.isCardInPlay("Leyline of Punishment")
+ if (GameState.isCardInPlay("Leyline of Punishment")
|| source.hasKeyword("Damage that would be dealt by CARDNAME can't be prevented.")) {
return damage;
}
@@ -8204,7 +8205,7 @@ public class Card extends GameEntity implements Comparable {
public final int staticReplaceDamage(final int damage, final Card source, final boolean isCombat) {
int restDamage = damage;
- for (Card c : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) {
+ for (Card c : GameState.getCardsIn(ZoneType.Battlefield)) {
if (c.getName().equals("Sulfuric Vapors")) {
if (source.isSpell() && source.isRed()) {
restDamage += 1;
@@ -8363,12 +8364,12 @@ public class Card extends GameEntity implements Comparable {
GameActionUtil.executeDamageToCreatureEffects(source, this, damageToAdd);
- if (AllZoneUtil.isCardInPlay(this) && wither) {
+ if (GameState.isCardInPlay(this) && wither) {
this.addCounter(Counters.M1M1, damageToAdd);
}
if (source.hasKeyword("Deathtouch") && this.isCreature()) {
Singletons.getModel().getGameAction().destroy(this);
- } else if (AllZoneUtil.isCardInPlay(this) && !wither) {
+ } else if (GameState.isCardInPlay(this) && !wither) {
this.damage += damageToAdd;
}
return true;
@@ -8885,7 +8886,7 @@ public class Card extends GameEntity implements Comparable {
}
// CantTarget static abilities
- final List allp = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ final List allp = GameState.getCardsIn(ZoneType.Battlefield);
for (final Card ca : allp) {
final ArrayList staticAbilities = ca.getStaticAbilities();
for (final StaticAbility stAb : staticAbilities) {
diff --git a/src/main/java/forge/CardUtil.java b/src/main/java/forge/CardUtil.java
index c88a1469af9..4171d700a66 100644
--- a/src/main/java/forge/CardUtil.java
+++ b/src/main/java/forge/CardUtil.java
@@ -38,6 +38,7 @@ import forge.card.CardManaCost;
import forge.card.EditionInfo;
import forge.card.mana.ManaCost;
import forge.control.input.InputPayManaCostUtil;
+import forge.game.GameState;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.gui.GuiDisplayUtil;
@@ -211,7 +212,7 @@ public final class CardUtil {
int xPaid = 0;
// 2012-07-22 - If a card is on the stack, count the xManaCost in with it's CMC
- if (AllZoneUtil.getCardsIn(ZoneType.Stack).contains(c) && c.getManaCost() != null) {
+ if (GameState.getCardsIn(ZoneType.Stack).contains(c) && c.getManaCost() != null) {
xPaid = c.getXManaCostPaid() * c.getManaCost().countX();
}
return c.getManaCost().getCMC() + xPaid;
@@ -828,7 +829,7 @@ public final class CardUtil {
if (strCol.equalsIgnoreCase("Colorless")) {
continue;
}
- for (final Card c : AllZoneUtil.getColorInPlay(strCol)) {
+ for (final Card c : GameState.getColorInPlay(strCol)) {
if (!res.contains(c) && c.isValid(valid, source.getController(), source) && !c.equals(origin)) {
res.add(c);
}
diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java
index db062681e89..6ad8da13bbe 100644
--- a/src/main/java/forge/GameAction.java
+++ b/src/main/java/forge/GameAction.java
@@ -77,7 +77,7 @@ public class GameAction {
*
*/
public final void resetActivationsPerTurn() {
- final List all = AllZoneUtil.getCardsInGame();
+ final List all = GameState.getCardsInGame();
// Reset Activations per Turn
for (final Card card : all) {
@@ -256,7 +256,7 @@ public class GameAction {
if (copied.isEquipped()) {
final List equipments = new ArrayList(copied.getEquippedBy());
for (final Card equipment : equipments) {
- if (AllZoneUtil.isCardInPlay(equipment)) {
+ if (GameState.isCardInPlay(equipment)) {
equipment.unEquipCard(copied);
}
}
@@ -265,7 +265,7 @@ public class GameAction {
if (copied.isEquipped()) {
final List equipments = new ArrayList(copied.getEquippedBy());
for (final Card equipment : equipments) {
- if (AllZoneUtil.isCardInPlay(equipment)) {
+ if (GameState.isCardInPlay(equipment)) {
equipment.unEquipCard(copied);
}
}
@@ -273,7 +273,7 @@ public class GameAction {
// equipment moving off battlefield
if (copied.isEquipping()) {
final Card equippedCreature = copied.getEquipping().get(0);
- if (AllZoneUtil.isCardInPlay(equippedCreature)) {
+ if (GameState.isCardInPlay(equippedCreature)) {
copied.unEquipCard(equippedCreature);
}
}
@@ -723,7 +723,7 @@ public class GameAction {
* @return a {@link forge.Card} object.
*/
public final Card exile(final Card c) {
- if (AllZoneUtil.isCardExiled(c)) {
+ if (GameState.isCardExiled(c)) {
return c;
}
@@ -943,7 +943,7 @@ public class GameAction {
AllZone.getStaticEffects().clearStaticEffects();
// search for cards with static abilities
- final List allCards = AllZoneUtil.getCardsInGame();
+ final List allCards = GameState.getCardsInGame();
final ArrayList staticAbilities = new ArrayList();
for (final Card card : allCards) {
for (StaticAbility sa : card.getStaticAbilities()) {
@@ -1010,7 +1010,7 @@ public class GameAction {
if (this.checkEndGameState(match, match.getCurrentGame())) {
// Clear Simultaneous triggers at the end of the game
new ViewWinLose(match);
- Singletons.getModel().getGameState().getStack().clearSimultaneousStack();
+ match.getCurrentGame().getStack().clearSimultaneousStack();
if (!refreeze) {
AllZone.getStack().unfreezeStack();
}
@@ -1028,12 +1028,12 @@ public class GameAction {
final HashMap runParams = new HashMap();
AllZone.getTriggerHandler().runTrigger(TriggerType.Always, runParams);
- for (Card c : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) {
+ for (Card c : GameState.getCardsIn(ZoneType.Battlefield)) {
if (c.isEquipped()) {
final List equipments = new ArrayList(c.getEquippedBy());
for (final Card equipment : equipments) {
- if (!AllZoneUtil.isCardInPlay(equipment)) {
+ if (!GameState.isCardInPlay(equipment)) {
equipment.unEquipCard(c);
checkAgain = true;
}
@@ -1042,7 +1042,7 @@ public class GameAction {
if (c.isEquipping()) {
final Card equippedCreature = c.getEquipping().get(0);
- if (!equippedCreature.isCreature() || !AllZoneUtil.isCardInPlay(equippedCreature)) {
+ if (!equippedCreature.isCreature() || !GameState.isCardInPlay(equippedCreature)) {
c.unEquipCard(equippedCreature);
checkAgain = true;
}
@@ -1066,7 +1066,7 @@ public class GameAction {
if (entity instanceof Card) {
final Card perm = (Card) entity;
- if (!AllZoneUtil.isCardInPlay(perm) || !perm.canBeEnchantedBy(c)) {
+ if (!GameState.isCardInPlay(perm) || !perm.canBeEnchantedBy(c)) {
c.unEnchantEntity(perm);
this.moveToGraveyard(c);
checkAgain = true;
@@ -1089,7 +1089,7 @@ public class GameAction {
}
}
- if (AllZoneUtil.isCardInPlay(c) && !c.isEnchanting()) {
+ if (GameState.isCardInPlay(c) && !c.isEnchanting()) {
this.moveToGraveyard(c);
checkAgain = true;
}
@@ -1203,7 +1203,7 @@ public class GameAction {
*/
private void destroyPlaneswalkers() {
// get all Planeswalkers
- final List list = CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.PLANEWALKERS);
+ final List list = CardLists.filter(GameState.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.PLANEWALKERS);
Card c;
for (int i = 0; i < list.size(); i++) {
@@ -1236,13 +1236,13 @@ public class GameAction {
*
*/
private void destroyLegendaryCreatures() {
- final List a = CardLists.getType(AllZoneUtil.getCardsIn(ZoneType.Battlefield), "Legendary");
- if (a.isEmpty() || AllZoneUtil.isCardInPlay("Mirror Gallery")) {
+ final List a = CardLists.getType(GameState.getCardsIn(ZoneType.Battlefield), "Legendary");
+ if (a.isEmpty() || GameState.isCardInPlay("Mirror Gallery")) {
return;
}
while (!a.isEmpty()) {
- List b = AllZoneUtil.getCardsIn(ZoneType.Battlefield, a.get(0).getName());
+ List b = GameState.getCardsIn(ZoneType.Battlefield, a.get(0).getName());
b = CardLists.getType(b, "Legendary");
b = CardLists.filter(b, new Predicate() {
@Override
@@ -1300,7 +1300,7 @@ public class GameAction {
* @return a boolean.
*/
public final boolean destroyNoRegeneration(final Card c) {
- if (!AllZoneUtil.isCardInPlay(c) || c.hasKeyword("Indestructible")) {
+ if (!GameState.isCardInPlay(c) || c.hasKeyword("Indestructible")) {
return false;
}
@@ -1365,7 +1365,7 @@ public class GameAction {
@Override
public void execute() {
- if (AllZoneUtil.isCardInPlay(c) && c.isCreature()) {
+ if (GameState.isCardInPlay(c) && c.isCreature()) {
c.addExtrinsicKeyword("Haste");
}
} // execute()
@@ -1400,7 +1400,7 @@ public class GameAction {
* @return a boolean.
*/
public final boolean sacrificeDestroy(final Card c) {
- if (!AllZoneUtil.isCardInPlay(c)) {
+ if (!GameState.isCardInPlay(c)) {
return false;
}
@@ -1479,7 +1479,7 @@ public class GameAction {
* @return a boolean.
*/
public final boolean destroy(final Card c) {
- if (!AllZoneUtil.isCardInPlay(c)
+ if (!GameState.isCardInPlay(c)
|| (c.hasKeyword("Indestructible") && (!c.isCreature() || (c.getNetDefense() > 0)))) {
return false;
}
@@ -1848,7 +1848,7 @@ public class GameAction {
}
} // isSpell
- List cardsOnBattlefield = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List cardsOnBattlefield = GameState.getCardsIn(ZoneType.Battlefield);
cardsOnBattlefield.add(originalCard);
final ArrayList raiseAbilities = new ArrayList();
final ArrayList reduceAbilities = new ArrayList();
diff --git a/src/main/java/forge/GameActionUtil.java b/src/main/java/forge/GameActionUtil.java
index ade42d350e5..4ea8d418907 100644
--- a/src/main/java/forge/GameActionUtil.java
+++ b/src/main/java/forge/GameActionUtil.java
@@ -49,6 +49,7 @@ import forge.control.input.InputPayManaCostAbility;
import forge.control.input.InputPayReturnCost;
import forge.control.input.InputPaySacCost;
import forge.game.GameLossReason;
+import forge.game.GameState;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
@@ -104,7 +105,7 @@ public final class GameActionUtil {
public void execute() {
if (!c.isCopiedSpell()) {
- final List maelstromNexii = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Maelstrom Nexus");
+ final List maelstromNexii = GameState.getCardsIn(ZoneType.Battlefield, "Maelstrom Nexus");
for (final Card nexus : maelstromNexii) {
if (CardUtil.getThisTurnCast("Card.YouCtrl", nexus).size() == 1) {
@@ -655,7 +656,7 @@ public final class GameActionUtil {
public static void executeVampiricEffects(final Card c) {
final ArrayList a = c.getKeyword();
for (int i = 0; i < a.size(); i++) {
- if (AllZoneUtil.isCardInPlay(c)
+ if (GameState.isCardInPlay(c)
&& a.get(i)
.toString()
.startsWith(
@@ -670,7 +671,7 @@ public final class GameActionUtil {
if (kw.contains("+2/+2")) {
counter = Counters.P2P2;
}
- if (AllZoneUtil.isCardInPlay(thisCard)) {
+ if (GameState.isCardInPlay(thisCard)) {
thisCard.addCounter(counter, 1);
}
}
@@ -941,7 +942,7 @@ public final class GameActionUtil {
produces.put("Plains", "W");
produces.put("Swamp", "B");
- List lands = AllZoneUtil.getCardsInGame();
+ List lands = GameState.getCardsInGame();
lands = CardLists.filter(lands, Presets.LANDS);
// remove all abilities granted by this Command
@@ -1012,8 +1013,8 @@ public final class GameActionUtil {
}
// add +1/+1 to cards
list.clear();
- final int num = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Coat of Arms").size();
- final List creatures = CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.CREATURES);
+ final int num = GameState.getCardsIn(ZoneType.Battlefield, "Coat of Arms").size();
+ final List creatures = CardLists.filter(GameState.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.CREATURES);
for (Card c : creatures) {
for (Card c2 : creatures) {
@@ -1037,9 +1038,9 @@ public final class GameActionUtil {
@Override
public void execute() {
- final List alphaStatuses = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Alpha Status");
+ final List alphaStatuses = GameState.getCardsIn(ZoneType.Battlefield, "Alpha Status");
- final List allCreatures = AllZoneUtil.getCreaturesInPlay();
+ final List allCreatures = GameState.getCreaturesInPlay();
for (int i = 0; i < this.previouslyPumped.size(); i++) {
this.previouslyPumped.get(i).addSemiPermanentAttackBoost(0 - this.previouslyPumpedValue.get(i));
@@ -1074,7 +1075,7 @@ public final class GameActionUtil {
@Override
public void execute() {
// get all creatures
- final List cards = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Umbra Stalker");
+ final List cards = GameState.getCardsIn(ZoneType.Battlefield, "Umbra Stalker");
for (final Card c : cards) {
final Player player = c.getController();
final List grave = player.getCardsIn(ZoneType.Graveyard);
@@ -1091,7 +1092,7 @@ public final class GameActionUtil {
@Override
public void execute() {
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
list = CardLists.filter(list, new Predicate() {
@Override
@@ -1114,7 +1115,7 @@ public final class GameActionUtil {
@Override
public void execute() {
- final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Old Man of the Sea");
+ final List list = GameState.getCardsIn(ZoneType.Battlefield, "Old Man of the Sea");
for (final Card oldman : list) {
if (!oldman.getGainControlTargets().isEmpty()) {
if (oldman.getNetAttack() < oldman.getGainControlTargets().get(0).getNetAttack()) {
@@ -1135,7 +1136,7 @@ public final class GameActionUtil {
@Override
public void execute() {
- final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Liu Bei, Lord of Shu");
+ final List list = GameState.getCardsIn(ZoneType.Battlefield, "Liu Bei, Lord of Shu");
if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
@@ -1174,7 +1175,7 @@ public final class GameActionUtil {
@Override
public void execute() {
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
list = CardLists.filter(list, new Predicate() {
@Override
public boolean apply(final Card c) {
@@ -1192,7 +1193,7 @@ public final class GameActionUtil {
}
private int countSoundTheCalls() {
- List list = AllZoneUtil.getCardsIn(ZoneType.Graveyard, "Sound the Call");
+ List list = GameState.getCardsIn(ZoneType.Graveyard, "Sound the Call");
return list.size();
}
@@ -1205,7 +1206,7 @@ public final class GameActionUtil {
@Override
public void execute() {
// get all creatures
- final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Tarmogoyf");
+ final List list = GameState.getCardsIn(ZoneType.Battlefield, "Tarmogoyf");
for (int i = 0; i < list.size(); i++) {
final Card c = list.get(i);
@@ -1216,7 +1217,7 @@ public final class GameActionUtil {
} // execute()
private int countDiffTypes() {
- final List list = AllZoneUtil.getCardsIn(ZoneType.Graveyard);
+ final List list = GameState.getCardsIn(ZoneType.Graveyard);
int count = 0;
for (int q = 0; q < list.size(); q++) {
@@ -1304,7 +1305,7 @@ public final class GameActionUtil {
*/
public static void doPowerSink(final Player p) {
// get all lands with mana abilities
- List lands = AllZoneUtil.getPlayerLandsInPlay(p);
+ List lands = GameState.getPlayerLandsInPlay(p);
lands = CardLists.filter(lands, new Predicate() {
@Override
public boolean apply(final Card c) {
diff --git a/src/main/java/forge/StaticEffects.java b/src/main/java/forge/StaticEffects.java
index 5cdad82f60c..08a251c43ec 100644
--- a/src/main/java/forge/StaticEffects.java
+++ b/src/main/java/forge/StaticEffects.java
@@ -27,6 +27,7 @@ import com.esotericsoftware.minlog.Log;
import forge.card.replacement.ReplacementEffect;
import forge.card.spellability.SpellAbility;
import forge.card.staticability.StaticAbility;
+import forge.game.GameState;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
@@ -325,7 +326,7 @@ public class StaticEffects {
public final void rePopulateStateBasedList() {
this.reset();
- final List cards = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ final List cards = GameState.getCardsIn(ZoneType.Battlefield);
Log.debug("== Start add state effects ==");
for (int i = 0; i < cards.size(); i++) {
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactory.java b/src/main/java/forge/card/abilityfactory/AbilityFactory.java
index 08d74b52871..de2a38c9c62 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactory.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactory.java
@@ -22,7 +22,6 @@ import java.util.HashMap;
import java.util.List;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -41,6 +40,7 @@ import forge.card.spellability.SpellAbilityCondition;
import forge.card.spellability.SpellAbilityRestriction;
import forge.card.spellability.SpellPermanent;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
@@ -1632,10 +1632,10 @@ public class AbilityFactory {
// Add whole Remembered list to handlePaid
final List list = new ArrayList();
if (card.getRemembered().isEmpty()) {
- final Card newCard = AllZoneUtil.getCardState(card);
+ final Card newCard = GameState.getCardState(card);
for (final Object o : newCard.getRemembered()) {
if (o instanceof Card) {
- list.add(AllZoneUtil.getCardState((Card) o));
+ list.add(GameState.getCardState((Card) o));
}
}
}
@@ -1649,7 +1649,7 @@ public class AbilityFactory {
} else {
for (final Object o : card.getRemembered()) {
if (o instanceof Card) {
- list.add(AllZoneUtil.getCardState((Card) o));
+ list.add(GameState.getCardState((Card) o));
}
}
}
@@ -1659,7 +1659,7 @@ public class AbilityFactory {
// Add whole Imprinted list to handlePaid
final List list = new ArrayList();
for (final Card c : card.getImprinted()) {
- list.add(AllZoneUtil.getCardState(c));
+ list.add(GameState.getCardState(c));
}
return CardFactoryUtil.handlePaid(list, calcX[1], card) * multiplier;
@@ -1669,7 +1669,7 @@ public class AbilityFactory {
if (card.isEnchanting()) {
Object o = card.getEnchanting();
if (o instanceof Card) {
- list.add(AllZoneUtil.getCardState((Card) o));
+ list.add(GameState.getCardState((Card) o));
}
}
return CardFactoryUtil.handlePaid(list, calcX[1], card) * multiplier;
@@ -1929,7 +1929,7 @@ public class AbilityFactory {
else {
final Object crd = root.getTriggeringObject(defined.substring(9));
if (crd instanceof Card) {
- c = AllZoneUtil.getCardState((Card) crd);
+ c = GameState.getCardState((Card) crd);
c = (Card) crd;
} else if (crd instanceof List>) {
for (final Card cardItem : (List) crd) {
@@ -1941,7 +1941,7 @@ public class AbilityFactory {
final SpellAbility root = sa.getRootSpellAbility();
final Object crd = root.getReplacingObject(defined.substring(8));
if (crd instanceof Card) {
- c = AllZoneUtil.getCardState((Card) crd);
+ c = GameState.getCardState((Card) crd);
} else if (crd instanceof List>) {
for (final Card cardItem : (List) crd) {
cards.add(cardItem);
@@ -1949,26 +1949,26 @@ public class AbilityFactory {
}
} else if (defined.equals("Remembered")) {
if (hostCard.getRemembered().isEmpty()) {
- final Card newCard = AllZoneUtil.getCardState(hostCard);
+ final Card newCard = GameState.getCardState(hostCard);
for (final Object o : newCard.getRemembered()) {
if (o instanceof Card) {
- cards.add(AllZoneUtil.getCardState((Card) o));
+ cards.add(GameState.getCardState((Card) o));
}
}
}
for (final Object o : hostCard.getRemembered()) {
if (o instanceof Card) {
- cards.add(AllZoneUtil.getCardState((Card) o));
+ cards.add(GameState.getCardState((Card) o));
}
}
} else if (defined.equals("Clones")) {
for (final Card clone : hostCard.getClones()) {
- cards.add(AllZoneUtil.getCardState(clone));
+ cards.add(GameState.getCardState(clone));
}
} else if (defined.equals("Imprinted")) {
for (final Card imprint : hostCard.getImprinted()) {
- cards.add(AllZoneUtil.getCardState(imprint));
+ cards.add(GameState.getCardState(imprint));
}
} else if (defined.startsWith("ThisTurnEntered")) {
final String[] workingCopy = defined.split("_");
@@ -2264,7 +2264,7 @@ public class AbilityFactory {
for (final Object o : card.getRemembered()) {
if (o instanceof Card) {
final Card rem = (Card) o;
- sas.addAll(AllZoneUtil.getCardState(rem).getSpellAbilities());
+ sas.addAll(GameState.getCardState(rem).getSpellAbilities());
}
}
} else if (defined.equals("Imprinted")) {
@@ -2285,7 +2285,7 @@ public class AbilityFactory {
final SpellAbility root = sa.getRootSpellAbility();
final Object crd = root.getTriggeringObject("Card");
if (crd instanceof Card) {
- triggeredCard = AllZoneUtil.getCardState((Card) crd);
+ triggeredCard = GameState.getCardState((Card) crd);
} //find the imprinted card that does not share a name with the triggered card
for (final SpellAbility spell : imprintedCards) {
if (!spell.getSourceCard().getName().equals(triggeredCard.getName())) {
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java
index 532de1e9a2c..dc5a4b92407 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java
@@ -23,7 +23,6 @@ import java.util.Iterator;
import java.util.Random;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.Counters;
import forge.Singletons;
@@ -35,6 +34,7 @@ import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.phase.CombatUtil;
import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil;
@@ -1617,7 +1617,7 @@ public class AbilityFactoryAlterLife {
}
if (source.getName().equals("Eternity Vessel")
- && (AllZoneUtil.isCardInPlay("Vampire Hexmage", opponent) || (source
+ && (GameState.isCardInPlay("Vampire Hexmage", opponent) || (source
.getCounters(Counters.CHARGE) == 0))) {
return false;
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java
index 824c15e6529..04ab5172d87 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java
@@ -26,7 +26,6 @@ import java.util.Map;
import com.google.common.collect.Iterables;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -45,6 +44,7 @@ import forge.card.cost.Cost;
import forge.card.staticability.StaticAbility;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler;
+import forge.game.GameState;
import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
@@ -538,7 +538,7 @@ public final class AbilityFactoryAnimate {
//if host is not on the battlefield don't apply
if (params.containsKey("UntilHostLeavesPlay")
- && !AllZoneUtil.isCardInPlay(sa.getSourceCard())) {
+ && !GameState.isCardInPlay(sa.getSourceCard())) {
return;
}
@@ -1296,7 +1296,7 @@ public final class AbilityFactoryAnimate {
}
if ((tgtPlayers == null) || tgtPlayers.isEmpty()) {
- list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ list = GameState.getCardsIn(ZoneType.Battlefield);
} else {
list = tgtPlayers.get(0).getCardsIn(ZoneType.Battlefield);
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java
index 6f6d6b748d8..1101a2f160b 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java
@@ -27,7 +27,6 @@ import java.util.Random;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -47,6 +46,7 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellPermanent;
import forge.card.spellability.Target;
import forge.card.staticability.StaticAbility;
+import forge.game.GameState;
import forge.game.phase.CombatUtil;
import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType;
@@ -347,7 +347,7 @@ public class AbilityFactoryAttach {
return null;
}
- List list = AllZoneUtil.getCardsIn(tgt.getZone());
+ List list = GameState.getCardsIn(tgt.getZone());
list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), attachSource);
if (params.containsKey("AITgts")) {
list = CardLists.getValidCards(list, params.get("AITgts"), sa.getActivatingPlayer(), attachSource);
@@ -1313,7 +1313,7 @@ public class AbilityFactoryAttach {
return;
}
- if (AllZoneUtil.isCardInPlay(crd)) {
+ if (GameState.isCardInPlay(crd)) {
crd.removeController(card);
}
@@ -1417,7 +1417,7 @@ public class AbilityFactoryAttach {
return true;
}
} else {
- List list = AllZoneUtil.getCardsIn(tgt.getZone());
+ List list = GameState.getCardsIn(tgt.getZone());
list = CardLists.getValidCards(list, tgt.getValidTgts(), aura.getActivatingPlayer(), source);
final Object o = GuiChoose.one(source + " - Select a card to attach to.", list);
@@ -1711,7 +1711,7 @@ public class AbilityFactoryAttach {
// If Cast Targets will be checked on the Stack
for (final Object o : targets) {
String valid = params.get("UnattachValid");
- List unattachList = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List unattachList = GameState.getCardsIn(ZoneType.Battlefield);
unattachList = CardLists.getValidCards(unattachList, valid.split(","), source.getController(), source);
for (final Card c : unattachList) {
AbilityFactoryAttach.handleUnattachment(o, c, af);
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryBond.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryBond.java
index a6b5319f839..19c6895d31a 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryBond.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryBond.java
@@ -21,7 +21,6 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-import forge.AllZoneUtil;
import forge.Card;
import forge.card.spellability.AbilityActivated;
@@ -30,6 +29,7 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost;
+import forge.game.GameState;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
@@ -325,7 +325,7 @@ public final class AbilityFactoryBond {
}
// find list of valid cards to pair with
- List cards = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List cards = GameState.getCardsIn(ZoneType.Battlefield);
cards = AbilityFactory.filterListByType(cards, params.get("ValidCards"), sa);
if (cards.isEmpty()) {
return;
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java
index 721022848bf..f6969b1a2f9 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java
@@ -27,7 +27,6 @@ import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardCharacteristicName;
@@ -51,6 +50,7 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellAbilityStackInstance;
import forge.card.spellability.SpellPermanent;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.phase.Combat;
import forge.game.phase.CombatUtil;
import forge.game.phase.PhaseType;
@@ -513,7 +513,7 @@ public final class AbilityFactoryChangeZone {
//Ninjutsu
if (params.containsKey("Ninjutsu")) {
- if (source.isType("Legendary") && !AllZoneUtil.isCardInPlay("Mirror Gallery")) {
+ if (source.isType("Legendary") && !GameState.isCardInPlay("Mirror Gallery")) {
final List list = ai.getCardsIn(ZoneType.Battlefield);
if (Iterables.any(list, CardPredicates.nameEquals(source.getName()))) {
return false;
@@ -976,7 +976,7 @@ public final class AbilityFactoryChangeZone {
}
} else if (!origin.contains(ZoneType.Library) && !origin.contains(ZoneType.Hand)
&& !params.containsKey("DefinedPlayer")) {
- fetchList = AllZoneUtil.getCardsIn(origin);
+ fetchList = GameState.getCardsIn(origin);
} else {
fetchList = player.getCardsIn(origin);
}
@@ -1162,7 +1162,7 @@ public final class AbilityFactoryChangeZone {
}
} else if (!origin.contains(ZoneType.Library) && !origin.contains(ZoneType.Hand)
&& !params.containsKey("DefinedPlayer")) {
- fetchList = AllZoneUtil.getCardsIn(origin);
+ fetchList = GameState.getCardsIn(origin);
fetchList = AbilityFactory.filterListByType(fetchList, type, sa);
} else {
fetchList = player.getCardsIn(origin);
@@ -1462,11 +1462,11 @@ public final class AbilityFactoryChangeZone {
Card card = null;
Combat combat = new Combat();
combat.initiatePossibleDefenders(ai);
- List attackers = AllZoneUtil.getCreaturesInPlay(ai.getOpponent());
+ List attackers = GameState.getCreaturesInPlay(ai.getOpponent());
for (Card att : attackers) {
combat.addAttacker(att);
}
- combat = ComputerUtilBlock.getBlockers(ai, combat, AllZoneUtil.getCreaturesInPlay(ai));
+ combat = ComputerUtilBlock.getBlockers(ai, combat, GameState.getCreaturesInPlay(ai));
if (CombatUtil.lifeInDanger(ai, combat)) {
// need something AI can cast now
@@ -1666,7 +1666,7 @@ public final class AbilityFactoryChangeZone {
tgt.resetTargets();
}
- List list = AllZoneUtil.getCardsIn(origin);
+ List list = GameState.getCardsIn(origin);
list = CardLists.getValidCards(list, tgt.getValidTgts(), ai, source);
if (params.containsKey("AITgts")) {
list = CardLists.getValidCards(list, params.get("AITgts"), sa.getActivatingPlayer(), source);
@@ -1776,7 +1776,7 @@ public final class AbilityFactoryChangeZone {
if (!sa.isTrigger() && sa.getPayCosts() != null
&& Singletons.getModel().getGameState().getPhaseHandler().getPhase().isBefore(PhaseType.MAIN2)
&& Singletons.getModel().getGameState().getPhaseHandler().isPlayerTurn(ai)
- && AllZoneUtil.getCreaturesInPlay(ai).isEmpty()) {
+ && GameState.getCreaturesInPlay(ai).isEmpty()) {
return false;
}
list = CardLists.filterControlledBy(list, ai.getOpponent());
@@ -1901,7 +1901,7 @@ public final class AbilityFactoryChangeZone {
final ZoneType destination = ZoneType.smartValueOf(params.get("Destination"));
final Target tgt = sa.getTarget();
- List list = AllZoneUtil.getCardsIn(origin);
+ List list = GameState.getCardsIn(origin);
list = CardLists.getValidCards(list, tgt.getValidTgts(), ai, source);
// Narrow down the list:
@@ -2349,7 +2349,7 @@ public final class AbilityFactoryChangeZone {
final ArrayList list = AbilityFactory.getDefinedCards(sa.getSourceCard(), defined, sa);
for (final Card c : list) {
- final Card actualCard = AllZoneUtil.getCardState(c);
+ final Card actualCard = GameState.getCardState(c);
ret.add(actualCard);
}
return ret;
@@ -2927,7 +2927,7 @@ public final class AbilityFactoryChangeZone {
}
if ((tgtPlayers == null) || tgtPlayers.isEmpty()) {
- cards = AllZoneUtil.getCardsIn(origin);
+ cards = GameState.getCardsIn(origin);
} else {
cards = tgtPlayers.get(0).getCardsIn(origin);
}
@@ -2972,7 +2972,7 @@ public final class AbilityFactoryChangeZone {
}
if (remember != null) {
- AllZoneUtil.getCardState(sa.getSourceCard()).addRemembered(c);
+ GameState.getCardState(sa.getSourceCard()).addRemembered(c);
}
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryChoose.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryChoose.java
index dafd96dfc67..1c96d0f91ab 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryChoose.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryChoose.java
@@ -31,7 +31,6 @@ import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -47,6 +46,7 @@ import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.card.cost.Cost;
+import forge.game.GameState;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
@@ -382,7 +382,7 @@ public final class AbilityFactoryChoose {
if (params.containsKey("AILogic")) {
final String logic = params.get("AILogic");
if (logic.equals("MostProminentOnBattlefield")) {
- chosen = CardFactoryUtil.getMostProminentCreatureType(AllZoneUtil
+ chosen = CardFactoryUtil.getMostProminentCreatureType(GameState
.getCardsIn(ZoneType.Battlefield));
}
if (logic.equals("MostProminentComputerControls")) {
@@ -391,11 +391,11 @@ public final class AbilityFactoryChoose {
if (logic.equals("MostProminentHumanControls")) {
chosen = CardFactoryUtil.getMostProminentCreatureType(opp.getCardsIn(ZoneType.Battlefield));
if (!CardUtil.isACreatureType(chosen) || invalidTypes.contains(chosen)) {
- chosen = CardFactoryUtil.getMostProminentCreatureType(CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), opp));
+ chosen = CardFactoryUtil.getMostProminentCreatureType(CardLists.filterControlledBy(GameState.getCardsInGame(), opp));
}
}
if (logic.equals("MostProminentInComputerDeck")) {
- chosen = CardFactoryUtil.getMostProminentCreatureType(CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), ai));
+ chosen = CardFactoryUtil.getMostProminentCreatureType(CardLists.filterControlledBy(GameState.getCardsInGame(), ai));
}
if (logic.equals("MostProminentInComputerGraveyard")) {
chosen = CardFactoryUtil.getMostProminentCreatureType(ai.getCardsIn(ZoneType.Graveyard));
@@ -730,21 +730,21 @@ public final class AbilityFactoryChoose {
if (params.containsKey("AILogic")) {
final String logic = params.get("AILogic");
if (logic.equals("MostProminentInHumanDeck")) {
- chosen.add(CardFactoryUtil.getMostProminentColor(CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), opp)));
+ chosen.add(CardFactoryUtil.getMostProminentColor(CardLists.filterControlledBy(GameState.getCardsInGame(), opp)));
} else if (logic.equals("MostProminentInComputerDeck")) {
- chosen.add(CardFactoryUtil.getMostProminentColor(CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), ai)));
+ chosen.add(CardFactoryUtil.getMostProminentColor(CardLists.filterControlledBy(GameState.getCardsInGame(), ai)));
} else if (logic.equals("MostProminentDualInComputerDeck")) {
- List prominence = CardFactoryUtil.getColorByProminence(CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), ai));
+ List prominence = CardFactoryUtil.getColorByProminence(CardLists.filterControlledBy(GameState.getCardsInGame(), ai));
chosen.add(prominence.get(0));
chosen.add(prominence.get(1));
}
else if (logic.equals("MostProminentInGame")) {
- chosen.add(CardFactoryUtil.getMostProminentColor(AllZoneUtil.getCardsInGame()));
+ chosen.add(CardFactoryUtil.getMostProminentColor(GameState.getCardsInGame()));
}
else if (logic.equals("MostProminentHumanCreatures")) {
- List list = AllZoneUtil.getCreaturesInPlay(opp);
+ List list = GameState.getCreaturesInPlay(opp);
if (list.isEmpty()) {
- list = CardLists.filter(CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), opp), CardPredicates.Presets.CREATURES);
+ list = CardLists.filter(CardLists.filterControlledBy(GameState.getCardsInGame(), opp), CardPredicates.Presets.CREATURES);
}
chosen.add(CardFactoryUtil.getMostProminentColor(list));
}
@@ -752,7 +752,7 @@ public final class AbilityFactoryChoose {
chosen.add(CardFactoryUtil.getMostProminentColor(ai.getCardsIn(ZoneType.Battlefield)));
}
else if (logic.equals("MostProminentPermanent")) {
- final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ final List list = GameState.getCardsIn(ZoneType.Battlefield);
chosen.add(CardFactoryUtil.getMostProminentColor(list));
}
else if (logic.equals("MostProminentAttackers")) {
@@ -1646,7 +1646,7 @@ public final class AbilityFactoryChoose {
chosen = CardFactoryUtil.getMostProminentCardName(p.getOpponent().getCardsIn(ZoneType.Library));
}
} else {
- List list = CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), p.getOpponent());
+ List list = CardLists.filterControlledBy(GameState.getCardsInGame(), p.getOpponent());
list = CardLists.filter(list, Predicates.not(Presets.LANDS));
if (!list.isEmpty()) {
chosen = list.get(0).getName();
@@ -1872,7 +1872,7 @@ public final class AbilityFactoryChoose {
if (params.containsKey("ChoiceZone")) {
choiceZone = ZoneType.smartValueOf(params.get("ChoiceZone"));
}
- List choices = AllZoneUtil.getCardsIn(choiceZone);
+ List choices = GameState.getCardsIn(choiceZone);
if (params.containsKey("Choices")) {
choices = CardLists.getValidCards(choices, params.get("Choices"), host.getController(), host);
}
@@ -1941,7 +1941,7 @@ public final class AbilityFactoryChoose {
if (params.containsKey("ChoiceZone")) {
choiceZone = ZoneType.smartValueOf(params.get("ChoiceZone"));
}
- List choices = AllZoneUtil.getCardsIn(choiceZone);
+ List choices = GameState.getCardsIn(choiceZone);
if (params.containsKey("Choices")) {
choices = CardLists.getValidCards(choices, params.get("Choices"), host.getController(), host);
}
@@ -1954,7 +1954,7 @@ public final class AbilityFactoryChoose {
? CardFactoryUtil.xCount(host, host.getSVar(params.get("Amount"))) : Integer.parseInt(numericAmount);
if (params.containsKey("SunderingTitan")) {
- final List land = AllZoneUtil.getLandsInPlay();
+ final List land = GameState.getLandsInPlay();
final ArrayList basic = CardUtil.getBasicTypes();
for (final String type : basic) {
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java
index 976ded217ff..dc294f92c7d 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java
@@ -20,12 +20,12 @@ package forge.card.abilityfactory;
import java.util.HashMap;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.spellability.AbilitySub;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
+import forge.game.GameState;
// Cleanup is not the same as other AFs, it is only used as a Drawback, and only used to Cleanup particular card states
// That need to be reset. I'm creating this to clear Remembered Cards at the
@@ -106,7 +106,7 @@ public final class AbilityFactoryCleanup {
if (params.containsKey("ClearRemembered")) {
source.clearRemembered();
- AllZoneUtil.getCardState(source).clearRemembered();
+ GameState.getCardState(source).clearRemembered();
}
if (params.containsKey("ClearImprinted")) {
source.clearImprinted();
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java
index dc934dcae2e..a1b6a4887b6 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java
@@ -25,7 +25,6 @@ import java.util.List;
import java.util.Random;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardCharacteristicName;
@@ -41,6 +40,7 @@ import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
@@ -307,7 +307,7 @@ public final class AbilityFactoryCopy {
final Target abTgt = sa.getTarget();
if (abTgt != null) {
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
list = CardLists.getValidCards(list, abTgt.getValidTgts(), source.getController(), source);
list = CardLists.getTargetableCards(list, sa);
abTgt.resetTargets();
@@ -402,7 +402,7 @@ public final class AbilityFactoryCopy {
}
// start copied Kiki code
- int multiplier = AllZoneUtil.getTokenDoublersMagnitude(hostCard.getController());
+ int multiplier = GameState.getTokenDoublersMagnitude(hostCard.getController());
multiplier *= numCopies;
final Card[] crds = new Card[multiplier];
@@ -487,7 +487,7 @@ public final class AbilityFactoryCopy {
public void resolve() {
// technically your opponent could steal the token
// and the token shouldn't be sacrificed
- if (AllZoneUtil.isCardInPlay(target[index])) {
+ if (GameState.isCardInPlay(target[index])) {
if (params.get("AtEOT").equals("Sacrifice")) {
// maybe do a setSacrificeAtEOT, but
// probably not.
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java
index 9aee13ce6a8..cfd336afc2a 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java
@@ -28,7 +28,6 @@ import java.util.Random;
import com.google.common.base.Predicate;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -43,6 +42,7 @@ import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.control.input.Input;
+import forge.game.GameState;
import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil;
@@ -1526,7 +1526,7 @@ public class AbilityFactoryCounters {
}
private static void proliferateResolveHuman(final AbilityFactory af, final SpellAbility sa) {
- final List unchosen = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ final List unchosen = GameState.getCardsIn(ZoneType.Battlefield);
AllZone.getInputControl().setInput(new Input() {
private static final long serialVersionUID = -1779224307654698954L;
@@ -1599,7 +1599,7 @@ public class AbilityFactoryCounters {
}
};
- List cardsToProliferate = CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Battlefield), predProliferate);
+ List cardsToProliferate = CardLists.filter(GameState.getCardsIn(ZoneType.Battlefield), predProliferate);
List playersToPoison = new ArrayList();
for( Player e : enemies ) {
if ( e.getPoisonCounters() > 0 )
@@ -1990,7 +1990,7 @@ public class AbilityFactoryCounters {
final String valid = params.get("ValidCards");
final ZoneType zone = params.containsKey("ValidZone") ? ZoneType.smartValueOf(params.get("ValidZone")) : ZoneType.Battlefield;
- List cards = AllZoneUtil.getCardsIn(zone);
+ List cards = GameState.getCardsIn(zone);
cards = CardLists.getValidCards(cards, valid, sa.getSourceCard().getController(), sa.getSourceCard());
final Target tgt = sa.getTarget();
@@ -2245,7 +2245,7 @@ public class AbilityFactoryCounters {
final String valid = params.get("ValidCards");
final ZoneType zone = params.containsKey("ValidZone") ? ZoneType.smartValueOf(params.get("ValidZone")) : ZoneType.Battlefield;
- List cards = AllZoneUtil.getCardsIn(zone);
+ List cards = GameState.getCardsIn(zone);
cards = CardLists.getValidCards(cards, valid, sa.getSourceCard().getController(), sa.getSourceCard());
final Target tgt = sa.getTarget();
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java
index 17169859b69..4b342242f90 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java
@@ -25,7 +25,6 @@ import java.util.Random;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -41,6 +40,7 @@ import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.card.spellability.TargetSelection;
+import forge.game.GameState;
import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil;
@@ -904,7 +904,7 @@ public class AbilityFactoryDealDamage {
for (final Object o : tgts) {
if (o instanceof Card) {
final Card c = (Card) o;
- if (AllZoneUtil.isCardInPlay(c) && (!targeted || c.canBeTargetedBy(saMe))) {
+ if (GameState.isCardInPlay(c) && (!targeted || c.canBeTargetedBy(saMe))) {
if (noPrevention) {
c.addDamageWithoutPrevention(dmg, source);
} else if (combatDmg) {
@@ -1376,7 +1376,7 @@ public class AbilityFactoryDealDamage {
}
if (params.containsKey("ValidCards")) {
- list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ list = GameState.getCardsIn(ZoneType.Battlefield);
}
if (targetPlayer != null) {
@@ -1640,7 +1640,7 @@ public class AbilityFactoryDealDamage {
final HashMap params = af.getMapParams();
final Card card = sa.getSourceCard();
- List sources = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List sources = GameState.getCardsIn(ZoneType.Battlefield);
if (params.containsKey("ValidCards")) {
sources = CardLists.getValidCards(sources, params.get("ValidCards"), card.getController(), card);
}
@@ -1660,7 +1660,7 @@ public class AbilityFactoryDealDamage {
// System.out.println(source+" deals "+dmg+" damage to "+o.toString());
if (o instanceof Card) {
final Card c = (Card) o;
- if (AllZoneUtil.isCardInPlay(c) && (!targeted || c.canBeTargetedBy(sa))) {
+ if (GameState.isCardInPlay(c) && (!targeted || c.canBeTargetedBy(sa))) {
c.addDamage(dmg, source);
}
@@ -1900,7 +1900,7 @@ public class AbilityFactoryDealDamage {
Target tgt = sa.getTarget();
tgt.resetTargets();
- List aiCreatures = AllZoneUtil.getCreaturesInPlay(ai);
+ List aiCreatures = GameState.getCreaturesInPlay(ai);
aiCreatures = CardLists.getTargetableCards(aiCreatures, sa);
aiCreatures = CardLists.filter(aiCreatures, new Predicate() {
@Override
@@ -1909,7 +1909,7 @@ public class AbilityFactoryDealDamage {
}
});
- List humCreatures = AllZoneUtil.getCreaturesInPlay(ai.getOpponent());
+ List humCreatures = GameState.getCreaturesInPlay(ai.getOpponent());
humCreatures = CardLists.getTargetableCards(humCreatures, sa);
final Random r = MyRandom.getRandom();
@@ -1993,8 +1993,8 @@ public class AbilityFactoryDealDamage {
fighter2 = tgts.get(1);
}
- if (fighter1 == null || fighter2 == null || !AllZoneUtil.isCardInPlay(fighter1)
- || !AllZoneUtil.isCardInPlay(fighter2)) {
+ if (fighter1 == null || fighter2 == null || !GameState.isCardInPlay(fighter1)
+ || !GameState.isCardInPlay(fighter2)) {
return;
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDebuff.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDebuff.java
index 40af5c8884a..9547104339c 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDebuff.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDebuff.java
@@ -27,7 +27,6 @@ import java.util.Random;
import com.google.common.base.Predicate;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -42,6 +41,7 @@ import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellAbilityRestriction;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.phase.CombatUtil;
import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil;
@@ -297,7 +297,7 @@ public final class AbilityFactoryDebuff {
private static boolean debuffCanPlayAI(final Player ai, final AbilityFactory af, final SpellAbility sa) {
// if there is no target and host card isn't in play, don't activate
final Card source = sa.getSourceCard();
- if ((sa.getTarget() == null) && !AllZoneUtil.isCardInPlay(source)) {
+ if ((sa.getTarget() == null) && !GameState.isCardInPlay(source)) {
return false;
}
@@ -450,7 +450,7 @@ public final class AbilityFactoryDebuff {
private static List getCurseCreatures(final Player ai, final AbilityFactory af, final SpellAbility sa,
final ArrayList kws) {
final Player opp = ai.getOpponent();
- List list = AllZoneUtil.getCreaturesInPlay(opp);
+ List list = GameState.getCreaturesInPlay(opp);
list = CardLists.getTargetableCards(list, sa);
if (!list.isEmpty()) {
@@ -480,7 +480,7 @@ public final class AbilityFactoryDebuff {
* @return a boolean.
*/
private static boolean debuffMandatoryTarget(final Player ai, final AbilityFactory af, final SpellAbility sa, final boolean mandatory) {
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
final Target tgt = sa.getTarget();
list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard());
@@ -601,7 +601,7 @@ public final class AbilityFactoryDebuff {
for (final Card tgtC : tgtCards) {
final ArrayList hadIntrinsic = new ArrayList();
- if (AllZoneUtil.isCardInPlay(tgtC) && tgtC.canBeTargetedBy(sa)) {
+ if (GameState.isCardInPlay(tgtC) && tgtC.canBeTargetedBy(sa)) {
for (final String kw : kws) {
if (tgtC.getIntrinsicKeyword().contains(kw)) {
hadIntrinsic.add(kw);
@@ -616,7 +616,7 @@ public final class AbilityFactoryDebuff {
@Override
public void execute() {
- if (AllZoneUtil.isCardInPlay(tgtC)) {
+ if (GameState.isCardInPlay(tgtC)) {
for (final String kw : hadIntrinsic) {
tgtC.addIntrinsicKeyword(kw);
}
@@ -842,12 +842,12 @@ public final class AbilityFactoryDebuff {
valid = params.get("ValidCards");
}
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
list = CardLists.getValidCards(list, valid.split(","), hostCard.getController(), hostCard);
for (final Card tgtC : list) {
final ArrayList hadIntrinsic = new ArrayList();
- if (AllZoneUtil.isCardInPlay(tgtC) && tgtC.canBeTargetedBy(sa)) {
+ if (GameState.isCardInPlay(tgtC) && tgtC.canBeTargetedBy(sa)) {
for (final String kw : kws) {
if (tgtC.getIntrinsicKeyword().contains(kw)) {
hadIntrinsic.add(kw);
@@ -862,7 +862,7 @@ public final class AbilityFactoryDebuff {
@Override
public void execute() {
- if (AllZoneUtil.isCardInPlay(tgtC)) {
+ if (GameState.isCardInPlay(tgtC)) {
for (final String kw : hadIntrinsic) {
tgtC.addIntrinsicKeyword(kw);
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java
index fe1b0360dfa..17989c1125b 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java
@@ -25,7 +25,6 @@ import java.util.Random;
import com.google.common.base.Predicate;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -40,6 +39,7 @@ import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
@@ -376,7 +376,7 @@ public class AbilityFactoryDestroy {
final Player opp = ai.getOpponent();
if (tgt != null) {
List list;
- list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ list = GameState.getCardsIn(ZoneType.Battlefield);
list = CardLists.getTargetableCards(list, sa);
list = CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source);
@@ -591,7 +591,7 @@ public class AbilityFactoryDestroy {
}
for (final Card tgtC : tgtCards) {
- if (AllZoneUtil.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
+ if (GameState.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
boolean destroyed = false;
if (sac) {
destroyed = Singletons.getModel().getGameAction().sacrifice(tgtC, sa);
@@ -606,7 +606,7 @@ public class AbilityFactoryDestroy {
}
for (final Card unTgtC : untargetedCards) {
- if (AllZoneUtil.isCardInPlay(unTgtC)) {
+ if (GameState.isCardInPlay(unTgtC)) {
boolean destroyed = false;
if (sac) {
destroyed = Singletons.getModel().getGameAction().sacrifice(unTgtC, sa);
@@ -1037,7 +1037,7 @@ public class AbilityFactoryDestroy {
valid = valid.replace("X", Integer.toString(AbilityFactory.calculateAmount(card, "X", sa)));
}
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
if (targetPlayer != null) {
list = CardLists.filterControlledBy(list, targetPlayer);
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java
index abd4c7a34cf..470811d1ecc 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java
@@ -25,7 +25,6 @@ import java.util.Random;
import com.google.common.base.Predicate;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -43,6 +42,7 @@ import forge.card.spellability.Target;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler;
import forge.card.trigger.TriggerType;
+import forge.game.GameState;
import forge.game.phase.CombatUtil;
import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType;
@@ -299,8 +299,8 @@ public class AbilityFactoryEffect {
} else if (logic.equals("Always")) {
randomReturn = true;
} else if (logic.equals("Evasion")) {
- List comp = AllZoneUtil.getCreaturesInPlay(ai);
- List human = AllZoneUtil.getCreaturesInPlay(ai.getOpponent());
+ List comp = GameState.getCreaturesInPlay(ai);
+ List human = GameState.getCreaturesInPlay(ai.getOpponent());
// only count creatures that can attack or block
comp = CardLists.filter(comp, new Predicate() {
@@ -448,7 +448,7 @@ public class AbilityFactoryEffect {
}
// Unique Effects shouldn't be duplicated
- if (params.containsKey("Unique") && AllZoneUtil.isCardInPlay(name)) {
+ if (params.containsKey("Unique") && GameState.isCardInPlay(name)) {
return;
}
@@ -554,7 +554,7 @@ public class AbilityFactoryEffect {
// Remember created effect
if (params.containsKey("RememberEffect")) {
- AllZoneUtil.getCardState(card).addRemembered(eff);
+ GameState.getCardState(card).addRemembered(eff);
}
// Duration
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java
index 08048fa56f3..664d567f6f3 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java
@@ -26,7 +26,6 @@ import java.util.Map;
import com.google.common.base.Predicate;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -41,6 +40,7 @@ import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.card.cost.Cost;
+import forge.game.GameState;
import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
@@ -425,7 +425,7 @@ public class AbilityFactoryGainControl {
final Target tgt = sa.getTarget();
if (this.params.containsKey("AllValid")) {
- tgtCards = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ tgtCards = GameState.getCardsIn(ZoneType.Battlefield);
tgtCards = AbilityFactory.filterListByType(tgtCards, this.params.get("AllValid"), sa);
} else if ((tgt != null) && !this.params.containsKey("Defined")) {
tgtCards.addAll(tgt.getTargetCards());
@@ -469,7 +469,7 @@ public class AbilityFactoryGainControl {
sa.getSourceCard().addGainControlTarget(tgtC);
}
- if (AllZoneUtil.isCardInPlay(tgtC)) {
+ if (GameState.isCardInPlay(tgtC)) {
if (!tgtC.equals(newController)) {
tgtC.addController(newController);
@@ -562,7 +562,7 @@ public class AbilityFactoryGainControl {
private boolean gainControlDrawbackAI(final Player ai, final SpellAbility sa) {
if ((sa.getTarget() == null) || !sa.getTarget().doesTarget()) {
if (this.params.containsKey("AllValid")) {
- List tgtCards = CardLists.filterControlledBy(AllZoneUtil.getCardsIn(ZoneType.Battlefield), ai.getOpponent());
+ List tgtCards = CardLists.filterControlledBy(GameState.getCardsIn(ZoneType.Battlefield), ai.getOpponent());
tgtCards = AbilityFactory.filterListByType(tgtCards, this.params.get("AllValid"), sa);
if (tgtCards.isEmpty()) {
return false;
@@ -651,7 +651,7 @@ public class AbilityFactoryGainControl {
if (null == c) {
return;
}
- if (AllZoneUtil.isCardInPlay(c)) {
+ if (GameState.isCardInPlay(c)) {
c.removeController(newController);
// Singletons.getModel().getGameAction().changeController(new ArrayList(c),
// c.getController(), originalController);
@@ -909,8 +909,8 @@ public class AbilityFactoryGainControl {
object2 = tgts.get(1);
}
- if (object1 == null || object2 == null || !AllZoneUtil.isCardInPlay(object1)
- || !AllZoneUtil.isCardInPlay(object2)) {
+ if (object1 == null || object2 == null || !GameState.isCardInPlay(object1)
+ || !GameState.isCardInPlay(object2)) {
return;
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryMana.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryMana.java
index b3cb5f75ad8..1f76b13cb77 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryMana.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryMana.java
@@ -25,7 +25,6 @@ import java.util.Random;
import com.google.common.collect.Iterables;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -42,6 +41,7 @@ import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.control.input.InputPayManaCostUtil;
+import forge.game.GameState;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
@@ -772,7 +772,7 @@ public class AbilityFactoryMana {
cards.add(c);
}
} else {
- cards = CardLists.getValidCards(AllZoneUtil.getCardsIn(ZoneType.Battlefield), validCard, abMana.getActivatingPlayer(), card);
+ cards = CardLists.getValidCards(GameState.getCardsIn(ZoneType.Battlefield), validCard, abMana.getActivatingPlayer(), card);
}
// remove anything cards that is already in parents
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java
index 2c0bd69b0a0..1988ca96a4f 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java
@@ -27,7 +27,6 @@ import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -42,6 +41,7 @@ import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil;
@@ -476,7 +476,7 @@ public class AbilityFactoryPermanentState {
final Card source = sa.getSourceCard();
final Target tgt = sa.getTarget();
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
list = CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source);
list = CardLists.getTargetableCards(list, sa);
@@ -606,7 +606,7 @@ public class AbilityFactoryPermanentState {
}
for (final Card tgtC : tgtCards) {
- if (AllZoneUtil.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
+ if (GameState.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
tgtC.untap();
}
}
@@ -1101,7 +1101,7 @@ public class AbilityFactoryPermanentState {
final Card source = sa.getSourceCard();
final Target tgt = sa.getTarget();
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
list = CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source);
list = CardLists.getTargetableCards(list, sa);
@@ -1230,7 +1230,7 @@ public class AbilityFactoryPermanentState {
}
for (final Card tgtC : tgtCards) {
- if ((AllZoneUtil.isCardInPlay(tgtC) || params.containsKey("ETB")) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
+ if ((GameState.isCardInPlay(tgtC) || params.containsKey("ETB")) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
if (tgtC.isUntapped() && (remTapped)) {
card.addRemembered(tgtC);
}
@@ -1421,7 +1421,7 @@ public class AbilityFactoryPermanentState {
}
if ((tgtPlayers == null) || tgtPlayers.isEmpty()) {
- list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ list = GameState.getCardsIn(ZoneType.Battlefield);
} else {
list = tgtPlayers.get(0).getCardsIn(ZoneType.Battlefield);
}
@@ -1679,7 +1679,7 @@ public class AbilityFactoryPermanentState {
}
if ((tgtPlayers == null) || tgtPlayers.isEmpty()) {
- cards = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ cards = GameState.getCardsIn(ZoneType.Battlefield);
} else {
cards = tgtPlayers.get(0).getCardsIn(ZoneType.Battlefield);
}
@@ -1723,7 +1723,7 @@ public class AbilityFactoryPermanentState {
valid = params.get("ValidCards");
}
- List validTappables = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List validTappables = GameState.getCardsIn(ZoneType.Battlefield);
final Target tgt = sa.getTarget();
@@ -1774,7 +1774,7 @@ public class AbilityFactoryPermanentState {
* @return a {@link forge.CardList} object.
*/
private static List getTapAllTargets(final String valid, final Card source) {
- List tmpList = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List tmpList = GameState.getCardsIn(ZoneType.Battlefield);
tmpList = CardLists.getValidCards(tmpList, valid, source.getController(), source);
tmpList = CardLists.filter(tmpList, Presets.UNTAPPED);
return tmpList;
@@ -2227,7 +2227,7 @@ public class AbilityFactoryPermanentState {
}
for (final Card tgtC : tgtCards) {
- if (AllZoneUtil.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
+ if (GameState.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
if (sa.getActivatingPlayer().isHuman()) {
final String[] tapOrUntap = new String[] { "Tap", "Untap" };
final Object z = GuiChoose.oneOrNone("Tap or Untap " + tgtC + "?", tapOrUntap);
@@ -2602,7 +2602,7 @@ public class AbilityFactoryPermanentState {
final Card source = sa.getSourceCard();
final Target tgt = sa.getTarget();
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
list = CardLists.getTargetableCards(CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source), sa);
return false;
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java
index 6684528fc19..c8579d4b77a 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java
@@ -26,7 +26,6 @@ import java.util.Random;
import com.google.common.base.Predicate;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardCharacteristicName;
@@ -44,6 +43,7 @@ import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellAbilityRestriction;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
@@ -304,7 +304,7 @@ public final class AbilityFactoryPlay {
final Target tgt = sa.getTarget();
if (tgt != null) {
ZoneType zone = tgt.getZone().get(0);
- cards = AllZoneUtil.getCardsIn(zone);
+ cards = GameState.getCardsIn(zone);
cards = CardLists.getValidCards(cards, tgt.getValidTgts(), ai, source);
if (cards.isEmpty()) {
return false;
@@ -376,7 +376,7 @@ public final class AbilityFactoryPlay {
if (params.containsKey("ValidZone")) {
zone = ZoneType.smartValueOf(params.get("ValidZone"));
}
- tgtCards = AllZoneUtil.getCardsIn(zone);
+ tgtCards = GameState.getCardsIn(zone);
tgtCards = AbilityFactory.filterListByType(tgtCards, params.get("Valid"), sa);
} else if (params.containsKey("Defined")) {
tgtCards = new ArrayList(AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa));
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPreventDamage.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPreventDamage.java
index 30d253cb5ee..f0fd08dfa80 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPreventDamage.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPreventDamage.java
@@ -22,7 +22,6 @@ import java.util.HashMap;
import java.util.List;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -37,6 +36,7 @@ import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.phase.CombatUtil;
import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType;
@@ -458,7 +458,7 @@ public class AbilityFactoryPreventDamage {
final Target tgt = sa.getTarget();
tgt.resetTargets();
// filter AIs battlefield by what I can target
- List targetables = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List targetables = GameState.getCardsIn(ZoneType.Battlefield);
targetables = CardLists.getValidCards(targetables, tgt.getValidTgts(), ai, hostCard);
final List compTargetables = CardLists.filterControlledBy(targetables, ai);
@@ -536,7 +536,7 @@ public class AbilityFactoryPreventDamage {
for (final Object o : tgts) {
if (o instanceof Card) {
final Card c = (Card) o;
- if (AllZoneUtil.isCardInPlay(c) && (!targeted || c.canBeTargetedBy(sa))) {
+ if (GameState.isCardInPlay(c) && (!targeted || c.canBeTargetedBy(sa))) {
c.addPreventNextDamage(numDam);
}
@@ -549,7 +549,7 @@ public class AbilityFactoryPreventDamage {
}
for (final Card c : untargetedCards) {
- if (AllZoneUtil.isCardInPlay(c)) {
+ if (GameState.isCardInPlay(c)) {
c.addPreventNextDamage(numDam);
}
}
@@ -788,7 +788,7 @@ public class AbilityFactoryPreventDamage {
}
if (params.containsKey("ValidCards")) {
- list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ list = GameState.getCardsIn(ZoneType.Battlefield);
}
list = AbilityFactory.filterListByType(list, params.get("ValidCards"), sa);
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryProtection.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryProtection.java
index 4ff99676b05..408be47b2e0 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryProtection.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryProtection.java
@@ -28,7 +28,6 @@ import javax.swing.JOptionPane;
import com.google.common.base.Predicate;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -44,6 +43,7 @@ import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.phase.CombatUtil;
import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil;
@@ -249,7 +249,7 @@ public final class AbilityFactoryProtection {
final Card hostCard = af.getHostCard();
final ArrayList gains = AbilityFactoryProtection.getProtectionList(hostCard, af.getMapParams());
- List list = AllZoneUtil.getCreaturesInPlay(ai);
+ List list = GameState.getCreaturesInPlay(ai);
list = CardLists.filter(list, new Predicate() {
@Override
public boolean apply(final Card c) {
@@ -304,7 +304,7 @@ public final class AbilityFactoryProtection {
final HashMap params = af.getMapParams();
final Card hostCard = af.getHostCard();
// if there is no target and host card isn't in play, don't activate
- if ((sa.getTarget() == null) && !AllZoneUtil.isCardInPlay(hostCard)) {
+ if ((sa.getTarget() == null) && !GameState.isCardInPlay(hostCard)) {
return false;
}
@@ -470,7 +470,7 @@ public final class AbilityFactoryProtection {
final HashMap params = af.getMapParams();
final Card host = af.getHostCard();
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
final Target tgt = sa.getTarget();
list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard());
@@ -745,9 +745,9 @@ public final class AbilityFactoryProtection {
if (params.containsKey("AILogic")) {
final String logic = params.get("AILogic");
if (logic.equals("MostProminentHumanCreatures")) {
- List list = AllZoneUtil.getCreaturesInPlay(ai.getOpponent());
+ List list = GameState.getCreaturesInPlay(ai.getOpponent());
if (list.isEmpty()) {
- list = CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), ai.getOpponent());
+ list = CardLists.filterControlledBy(GameState.getCardsInGame(), ai.getOpponent());
}
if (!list.isEmpty()) {
choice = CardFactoryUtil.getMostProminentColor(list);
@@ -788,7 +788,7 @@ public final class AbilityFactoryProtection {
final Card tgtC = tgtCards.get(j);
// only pump things in play
- if (!AllZoneUtil.isCardInPlay(tgtC)) {
+ if (!GameState.isCardInPlay(tgtC)) {
continue;
}
@@ -808,7 +808,7 @@ public final class AbilityFactoryProtection {
@Override
public void execute() {
- if (AllZoneUtil.isCardInPlay(tgtC)) {
+ if (GameState.isCardInPlay(tgtC)) {
for (final String gain : gains) {
tgtC.removeExtrinsicKeyword("Protection from " + gain);
}
@@ -825,7 +825,7 @@ public final class AbilityFactoryProtection {
for (final Card unTgtC : untargetedCards) {
// only pump things in play
- if (!AllZoneUtil.isCardInPlay(unTgtC)) {
+ if (!GameState.isCardInPlay(unTgtC)) {
continue;
}
@@ -840,7 +840,7 @@ public final class AbilityFactoryProtection {
@Override
public void execute() {
- if (AllZoneUtil.isCardInPlay(unTgtC)) {
+ if (GameState.isCardInPlay(unTgtC)) {
for (final String gain : gains) {
unTgtC.removeExtrinsicKeyword("Protection from " + gain);
}
@@ -1032,7 +1032,7 @@ public final class AbilityFactoryProtection {
private static boolean protectAllCanPlayAI(final Player ai, final AbilityFactory af, final SpellAbility sa) {
final Card hostCard = af.getHostCard();
// if there is no target and host card isn't in play, don't activate
- if ((sa.getTarget() == null) && !AllZoneUtil.isCardInPlay(hostCard)) {
+ if ((sa.getTarget() == null) && !GameState.isCardInPlay(hostCard)) {
return false;
}
@@ -1192,11 +1192,11 @@ public final class AbilityFactoryProtection {
valid = params.get("ValidCards");
}
if (!valid.equals("")) {
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
list = CardLists.getValidCards(list, valid, sa.getActivatingPlayer(), host);
for (final Card tgtC : list) {
- if (AllZoneUtil.isCardInPlay(tgtC)) {
+ if (GameState.isCardInPlay(tgtC)) {
for (final String gain : gains) {
tgtC.addExtrinsicKeyword("Protection from " + gain);
}
@@ -1208,7 +1208,7 @@ public final class AbilityFactoryProtection {
@Override
public void execute() {
- if (AllZoneUtil.isCardInPlay(tgtC)) {
+ if (GameState.isCardInPlay(tgtC)) {
for (final String gain : gains) {
tgtC.removeExtrinsicKeyword("Protection from " + gain);
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java
index af10038ad09..498526048e1 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java
@@ -27,7 +27,6 @@ import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -46,6 +45,7 @@ import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellAbilityRestriction;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.phase.Combat;
import forge.game.phase.CombatUtil;
import forge.game.phase.PhaseHandler;
@@ -372,7 +372,7 @@ public class AbilityFactoryPump {
|| card.getNetCombatDamage() <= 0
|| ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY)
|| ph.getPhase().isBefore(PhaseType.MAIN1)
- || CardLists.getNotKeyword(AllZoneUtil.getCreaturesInPlay(ai), "Defender").isEmpty())) {
+ || CardLists.getNotKeyword(GameState.getCreaturesInPlay(ai), "Defender").isEmpty())) {
return false;
}
if (ph.isPlayerTurn(human) && (!card.isAttacking()
@@ -414,7 +414,7 @@ public class AbilityFactoryPump {
}
Predicate opBlockers = CardPredicates.possibleBlockers(card);
- List cardsCanBlock = CardLists.filter(AllZoneUtil.getCreaturesInPlay(opp), opBlockers);
+ List cardsCanBlock = CardLists.filter(GameState.getCreaturesInPlay(opp), opBlockers);
final boolean evasive = (keyword.endsWith("Unblockable") || keyword.endsWith("Fear")
|| keyword.endsWith("Intimidate") || keyword.endsWith("Shadow"));
@@ -479,7 +479,7 @@ public class AbilityFactoryPump {
}
} else if (ph.isPlayerTurn(ai) && ph.getPhase().isBefore(PhaseType.COMBAT_DECLARE_ATTACKERS)
&& CombatUtil.canAttack(card)) {
- List blockers = AllZoneUtil.getCreaturesInPlay(opp);
+ List blockers = GameState.getCreaturesInPlay(opp);
for (Card blocker : blockers) {
if (CombatUtil.canBlock(card, blocker, combat)
&& !CombatUtil.canDestroyBlocker(blocker, card, combat, false)) {
@@ -491,7 +491,7 @@ public class AbilityFactoryPump {
} else if (combatRelevant) {
if (ph.isPlayerTurn(opp) || !(CombatUtil.canAttack(card) || card.isAttacking())
|| ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY)
- || (AllZoneUtil.getCreaturesInPlay(opp).size() < 1)
+ || (GameState.getCreaturesInPlay(opp).size() < 1)
|| cardsCanBlock.isEmpty()) {
return false;
}
@@ -554,7 +554,7 @@ public class AbilityFactoryPump {
} else if (keyword.equals("Vigilance")) {
if (ph.isPlayerTurn(opp) || !CombatUtil.canAttack(card)
|| ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS)
- || CardLists.getNotKeyword(AllZoneUtil.getCreaturesInPlay(opp), "Defender").size() < 1) {
+ || CardLists.getNotKeyword(GameState.getCreaturesInPlay(opp), "Defender").size() < 1) {
return false;
}
} else if (keyword.equals("Reach")) {
@@ -591,7 +591,7 @@ public class AbilityFactoryPump {
if (ph.isPlayerTurn(opp) || !(CombatUtil.canAttack(card) || card.isAttacking())
|| ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY)
|| card.getNetCombatDamage() <= 0
- || CardLists.getType(AllZoneUtil.getPlayerLandsInPlay(opp), "Island").isEmpty()
+ || CardLists.getType(GameState.getPlayerLandsInPlay(opp), "Island").isEmpty()
|| cardsCanBlock.isEmpty()) {
return false;
}
@@ -599,7 +599,7 @@ public class AbilityFactoryPump {
if (ph.isPlayerTurn(opp) || !(CombatUtil.canAttack(card) || card.isAttacking())
|| ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY)
|| card.getNetCombatDamage() <= 0
- || CardLists.getType(AllZoneUtil.getPlayerLandsInPlay(opp), "Swamp").isEmpty()
+ || CardLists.getType(GameState.getPlayerLandsInPlay(opp), "Swamp").isEmpty()
|| cardsCanBlock.isEmpty()) {
return false;
}
@@ -607,7 +607,7 @@ public class AbilityFactoryPump {
if (ph.isPlayerTurn(opp) || !(CombatUtil.canAttack(card) || card.isAttacking())
|| ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY)
|| card.getNetCombatDamage() <= 0
- || CardLists.getType(AllZoneUtil.getPlayerLandsInPlay(opp), "Mountain").isEmpty()
+ || CardLists.getType(GameState.getPlayerLandsInPlay(opp), "Mountain").isEmpty()
|| cardsCanBlock.isEmpty()) {
return false;
}
@@ -615,7 +615,7 @@ public class AbilityFactoryPump {
if (ph.isPlayerTurn(opp) || !(CombatUtil.canAttack(card) || card.isAttacking())
|| ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY)
|| card.getNetCombatDamage() <= 0
- || CardLists.getType(AllZoneUtil.getPlayerLandsInPlay(opp), "Forest").isEmpty()
+ || CardLists.getType(GameState.getPlayerLandsInPlay(opp), "Forest").isEmpty()
|| cardsCanBlock.isEmpty()) {
return false;
}
@@ -705,7 +705,7 @@ public class AbilityFactoryPump {
*/
private List getPumpCreatures(final Player ai, final SpellAbility sa) {
- List list = AllZoneUtil.getCreaturesInPlay(ai);
+ List list = GameState.getCreaturesInPlay(ai);
list = CardLists.filter(list, new Predicate() {
@Override
public boolean apply(final Card c) {
@@ -729,7 +729,7 @@ public class AbilityFactoryPump {
* @return a {@link forge.CardList} object.
*/
private List getCurseCreatures(final Player ai, final SpellAbility sa, final int defense, final int attack) {
- List list = AllZoneUtil.getCreaturesInPlay(ai.getOpponent());
+ List list = GameState.getCreaturesInPlay(ai.getOpponent());
list = CardLists.getTargetableCards(list, sa);
if ((defense < 0) && !list.isEmpty()) { // with spells that give -X/-X,
// compi will try to destroy a
@@ -982,7 +982,7 @@ public class AbilityFactoryPump {
List list = new ArrayList();
if (this.abilityFactory.getMapParams().containsKey("AILogic")) {
if (this.abilityFactory.getMapParams().get("AILogic").equals("HighestPower")) {
- list = CardLists.getValidCards(AllZoneUtil.getCreaturesInPlay(), tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard());
+ list = CardLists.getValidCards(GameState.getCreaturesInPlay(), tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard());
list = CardLists.getTargetableCards(list, sa);
CardLists.sortAttack(list);
if (!list.isEmpty()) {
@@ -1001,7 +1001,7 @@ public class AbilityFactoryPump {
} else {
if (!tgt.canTgtCreature()) {
ZoneType zone = tgt.getZone().get(0);
- list = AllZoneUtil.getCardsIn(zone);
+ list = GameState.getCardsIn(zone);
} else {
list = this.getPumpCreatures(ai, sa);
}
@@ -1081,7 +1081,7 @@ public class AbilityFactoryPump {
* @return a boolean.
*/
private boolean pumpMandatoryTarget(final Player ai, final AbilityFactory af, final SpellAbility sa, final boolean mandatory) {
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
final Target tgt = sa.getTarget();
final Player opp = ai.getOpponent();
list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard());
@@ -1445,7 +1445,7 @@ public class AbilityFactoryPump {
final Card tgtC = tgtCards.get(j);
// only pump things in PumpZone
- if (!AllZoneUtil.getCardsIn(pumpZone).contains(tgtC)) {
+ if (!GameState.getCardsIn(pumpZone).contains(tgtC)) {
continue;
}
@@ -1460,7 +1460,7 @@ public class AbilityFactoryPump {
for (int i = 0; i < untargetedCards.size(); i++) {
final Card tgtC = untargetedCards.get(i);
// only pump things in PumpZone
- if (!AllZoneUtil.getCardsIn(pumpZone).contains(tgtC)) {
+ if (!GameState.getCardsIn(pumpZone).contains(tgtC)) {
continue;
}
@@ -1480,7 +1480,7 @@ public class AbilityFactoryPump {
//if host is not on the battlefield don't apply
if (this.params.containsKey("UntilLoseControlOfHost")
- && !AllZoneUtil.isCardInPlay(sa.getSourceCard())) {
+ && !GameState.isCardInPlay(sa.getSourceCard())) {
return;
}
final int a = this.getNumAttack(sa);
@@ -1859,7 +1859,7 @@ public class AbilityFactoryPump {
list = new ArrayList();
if ((tgtPlayers == null) || tgtPlayers.isEmpty()) {
for (final ZoneType zone : affectedZones) {
- list.addAll(AllZoneUtil.getCardsIn(zone));
+ list.addAll(GameState.getCardsIn(zone));
}
} else {
@@ -1907,7 +1907,7 @@ public class AbilityFactoryPump {
@Override
public void execute() {
- if (AllZoneUtil.isCardInPlay(tgtC)) {
+ if (GameState.isCardInPlay(tgtC)) {
tgtC.addTempAttackBoost(-1 * a);
tgtC.addTempDefenseBoost(-1 * d);
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryRegenerate.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryRegenerate.java
index 44430ccbbd3..98f9549e5f7 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryRegenerate.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryRegenerate.java
@@ -23,7 +23,6 @@ import java.util.Iterator;
import java.util.List;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -38,6 +37,7 @@ import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.phase.CombatUtil;
import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil;
@@ -425,7 +425,7 @@ public class AbilityFactoryRegenerate {
final Target tgt = sa.getTarget();
tgt.resetTargets();
// filter AIs battlefield by what I can target
- List targetables = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List targetables = GameState.getCardsIn(ZoneType.Battlefield);
targetables = CardLists.getValidCards(targetables, tgt.getValidTgts(), ai, hostCard);
targetables = CardLists.getTargetableCards(targetables, sa);
final List compTargetables = CardLists.filterControlledBy(targetables, ai);
@@ -512,7 +512,7 @@ public class AbilityFactoryRegenerate {
}
};
- if (AllZoneUtil.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
+ if (GameState.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
tgtC.addShield();
AllZone.getEndOfTurn().addUntil(untilEOT);
}
@@ -740,7 +740,7 @@ public class AbilityFactoryRegenerate {
valid = params.get("ValidCards");
}
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
list = CardLists.getValidCards(list, valid.split(","), hostCard.getController(), hostCard);
list = CardLists.filter(list, CardPredicates.isController(ai));
@@ -829,7 +829,7 @@ public class AbilityFactoryRegenerate {
valid = params.get("ValidCards");
}
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
list = CardLists.getValidCards(list, valid.split(","), hostCard.getController(), hostCard);
for (final Card c : list) {
@@ -842,7 +842,7 @@ public class AbilityFactoryRegenerate {
}
};
- if (AllZoneUtil.isCardInPlay(c)) {
+ if (GameState.isCardInPlay(c)) {
c.addShield();
AllZone.getEndOfTurn().addUntil(untilEOT);
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryRepeat.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryRepeat.java
index ede915e5c63..3cebafb34dc 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryRepeat.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryRepeat.java
@@ -33,6 +33,7 @@ import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
@@ -278,7 +279,7 @@ public final class AbilityFactoryRepeat {
if (params.containsKey("RepeatDefined")) {
list.addAll(AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("RepeatDefined"), sa));
} else {
- list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ list = GameState.getCardsIn(ZoneType.Battlefield);
}
list = CardLists.getValidCards(list, repeatPresent.split(","), sa.getActivatingPlayer(), sa.getSourceCard());
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java
index 2c4857f003f..655ea192d52 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java
@@ -27,7 +27,6 @@ import java.util.Random;
import javax.swing.JOptionPane;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardCharacteristicName;
@@ -43,6 +42,7 @@ import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
@@ -669,7 +669,7 @@ public final class AbilityFactoryReveal {
*/
private static List sharesNameWithCardOnBattlefield(final List list) {
final List toReturn = new ArrayList();
- final List play = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ final List play = GameState.getCardsIn(ZoneType.Battlefield);
for (final Card c : list) {
for (final Card p : play) {
if (p.getName().equals(c.getName()) && !toReturn.contains(c)) {
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java b/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java
index 5b6f4b2b307..8b2861043a7 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java
@@ -23,7 +23,6 @@ import java.util.List;
import java.util.Random;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -37,6 +36,7 @@ import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
@@ -935,7 +935,7 @@ public class AbilityFactorySacrifice {
if (params.containsKey("Defined")) {
list = new ArrayList(AbilityFactory.getDefinedCards(af.getHostCard(), params.get("Defined"), sa));
} else {
- list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ list = GameState.getCardsIn(ZoneType.Battlefield);
}
final boolean remSacrificed = params.containsKey("RememberSacrificed");
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactorySetState.java b/src/main/java/forge/card/abilityfactory/AbilityFactorySetState.java
index 3f74a79eafc..984f0a2cc1f 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactorySetState.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactorySetState.java
@@ -23,7 +23,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardCharacteristicName;
@@ -35,6 +34,7 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost;
+import forge.game.GameState;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
@@ -471,7 +471,7 @@ public class AbilityFactorySetState {
valid = valid.replace("X", Integer.toString(AbilityFactory.calculateAmount(card, "X", sa)));
}
- List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List list = GameState.getCardsIn(ZoneType.Battlefield);
if (targetPlayer != null) {
list = CardLists.filterControlledBy(list, targetPlayer);
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java
index e5386d0407b..62f09001394 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java
@@ -23,7 +23,6 @@ import java.util.List;
import java.util.Random;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.Singletons;
@@ -37,6 +36,7 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler;
+import forge.game.GameState;
import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil;
@@ -641,10 +641,10 @@ public class AbilityFactoryToken extends AbilityFactory {
AllZone.getCombat().addAttacker(c);
}
if (remember != null) {
- AllZoneUtil.getCardState(sa.getSourceCard()).addRemembered(c);
+ GameState.getCardState(sa.getSourceCard()).addRemembered(c);
}
if (this.abilityFactory.getMapParams().get("RememberSource") != null) {
- AllZoneUtil.getCardState(c).addRemembered(host);
+ GameState.getCardState(c).addRemembered(host);
}
}
}
diff --git a/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java b/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java
index 1a50c5b8fbd..98ab41dc1e5 100644
--- a/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java
+++ b/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java
@@ -6,7 +6,6 @@ import java.util.List;
import javax.swing.JOptionPane;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.Command;
@@ -18,6 +17,7 @@ import forge.card.spellability.AbilityActivated;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.control.input.Input;
+import forge.game.GameState;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.PlayerZone;
@@ -212,7 +212,7 @@ class CardFactoryArtifacts {
}
if (this.getTargetCard() != null) {
- if (AllZoneUtil.isCardInPlay(this.getTargetCard())
+ if (GameState.isCardInPlay(this.getTargetCard())
&& this.getTargetCard().canBeTargetedBy(this)) {
this.getTargetCard().addDamage(damage, card);
}
diff --git a/src/main/java/forge/card/cardfactory/CardFactoryAuras.java b/src/main/java/forge/card/cardfactory/CardFactoryAuras.java
index 4fe11e3d882..d74ff0fa7b4 100644
--- a/src/main/java/forge/card/cardfactory/CardFactoryAuras.java
+++ b/src/main/java/forge/card/cardfactory/CardFactoryAuras.java
@@ -26,7 +26,6 @@ import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -41,6 +40,7 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellPermanent;
import forge.card.spellability.Target;
import forge.control.input.Input;
+import forge.game.GameState;
import forge.game.player.Player;
import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType;
@@ -87,7 +87,7 @@ class CardFactoryAuras {
final Player opp = getActivatingPlayer().getOpponent();
final String[] landTypes = new String[] { "Plains", "Island", "Swamp", "Mountain", "Forest" };
final HashMap humanLandCount = new HashMap();
- final List humanlands = AllZoneUtil.getPlayerLandsInPlay(opp);
+ final List humanlands = GameState.getPlayerLandsInPlay(opp);
for (final String landType : landTypes) {
humanLandCount.put(landType, 0);
@@ -115,7 +115,7 @@ class CardFactoryAuras {
}
newType[0] = landTypes[minAt];
- List list = AllZoneUtil.getPlayerLandsInPlay(opp);
+ List list = GameState.getPlayerLandsInPlay(opp);
list = CardLists.getNotType(list, newType[0]); // Don't enchant lands
// that already have the
// type
@@ -136,7 +136,7 @@ class CardFactoryAuras {
final Card c = this.getTargetCard();
- if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) {
+ if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) {
card.enchantEntity(c);
}
@@ -250,7 +250,7 @@ class CardFactoryAuras {
@Override
public void showMessage() {
- final List land = AllZoneUtil.getLandsInPlay();
+ final List land = GameState.getLandsInPlay();
this.stopSetNext(CardFactoryUtil
.inputTargetSpecific(spell, land, "Select target land", true, false));
}
@@ -268,7 +268,7 @@ class CardFactoryAuras {
@Override
public boolean canPlayAI() {
- List list = AllZoneUtil.getCreaturesInPlay(getActivatingPlayer().getOpponent());
+ List list = GameState.getCreaturesInPlay(getActivatingPlayer().getOpponent());
list = CardLists.getKeyword(list, "Flying");
if (list.isEmpty()) {
return false;
@@ -300,7 +300,7 @@ class CardFactoryAuras {
final Card c = this.getTargetCard();
- if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) {
+ if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) {
card.enchantEntity(c);
Log.debug("Enchanted: " + this.getTargetCard());
}
@@ -378,7 +378,7 @@ class CardFactoryAuras {
this.setTargetCard(stuffy.get(0));
return true;
} else {
- final List list = AllZoneUtil.getCreaturesInPlay(getActivatingPlayer().getOpponent());
+ final List list = GameState.getCreaturesInPlay(getActivatingPlayer().getOpponent());
if (list.isEmpty()) {
return false;
@@ -407,7 +407,7 @@ class CardFactoryAuras {
final Card c = this.getTargetCard();
- if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) {
+ if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) {
aura.enchantEntity(c);
}
} // resolve()
@@ -427,7 +427,7 @@ class CardFactoryAuras {
// This includes creatures Animate Dead can't enchant once
// in play.
// The human may try to Animate them, the AI will not.
- return CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Graveyard), Presets.CREATURES);
+ return CardLists.filter(GameState.getCardsIn(ZoneType.Graveyard), Presets.CREATURES);
}
@Override
diff --git a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java
index 96f3fa88829..4d06303625c 100644
--- a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java
+++ b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java
@@ -27,7 +27,6 @@ import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardCharacteristicName;
@@ -53,6 +52,7 @@ import forge.card.spellability.Target;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler;
import forge.control.input.Input;
+import forge.game.GameState;
import forge.game.player.Player;
import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType;
@@ -103,7 +103,7 @@ public class CardFactoryCreatures {
if (c.sumAllCounters() == 0) {
return;
- } else if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) {
+ } else if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) {
// zerker clean up:
for (final Counters c1 : Counters.values()) {
if (c.getCounters(c1) > 0) {
@@ -276,7 +276,7 @@ public class CardFactoryCreatures {
@Override
public void execute() {
- if (AllZoneUtil.isCardInPlay(card)) {
+ if (GameState.isCardInPlay(card)) {
Singletons.getModel().getGameAction().sacrifice(card, null);
}
}
@@ -304,7 +304,7 @@ public class CardFactoryCreatures {
@Override
public void execute() {
- final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Stangg Twin");
+ final List list = GameState.getCardsIn(ZoneType.Battlefield, "Stangg Twin");
if (list.size() == 1) {
Singletons.getModel().getGameAction().exile(list.get(0));
@@ -330,7 +330,7 @@ public class CardFactoryCreatures {
@Override
public void resolve() {
- List allTokens = AllZoneUtil.getCreaturesInPlay(card.getController());
+ List allTokens = GameState.getCreaturesInPlay(card.getController());
allTokens = CardLists.filter(allTokens, Presets.TOKEN);
CardFactoryUtil.copyTokens(allTokens);
@@ -338,7 +338,7 @@ public class CardFactoryCreatures {
@Override
public boolean canPlayAI() {
- List allTokens = AllZoneUtil.getCreaturesInPlay(getActivatingPlayer());
+ List allTokens = GameState.getCreaturesInPlay(getActivatingPlayer());
allTokens = CardLists.filter(allTokens, Presets.TOKEN);
return allTokens.size() >= 2;
@@ -451,7 +451,7 @@ public class CardFactoryCreatures {
return;
}
- if (!(target.canBeTargetedBy(this) && AllZoneUtil.isCardInPlay(target))) {
+ if (!(target.canBeTargetedBy(this) && GameState.isCardInPlay(target))) {
return;
}
@@ -890,7 +890,7 @@ public class CardFactoryCreatures {
if (p.canBeTargetedBy(this)) {
p.setSkipNextUntap(true);
for (final Card c : targetPerms) {
- if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) {
+ if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) {
c.tap();
}
}
@@ -980,7 +980,7 @@ public class CardFactoryCreatures {
if (player.isHuman()) {
AllZone.getInputControl().setInput(playerInput);
} else {
- List list = AllZoneUtil.getCreaturesInPlay(player.getOpponent());
+ List list = GameState.getCreaturesInPlay(player.getOpponent());
list = CardLists.getTargetableCards(list, ability);
if ( !list.isEmpty() )
{
diff --git a/src/main/java/forge/card/cardfactory/CardFactoryEnchantments.java b/src/main/java/forge/card/cardfactory/CardFactoryEnchantments.java
index 6bf3d8fead1..db18351ddf6 100644
--- a/src/main/java/forge/card/cardfactory/CardFactoryEnchantments.java
+++ b/src/main/java/forge/card/cardfactory/CardFactoryEnchantments.java
@@ -5,7 +5,6 @@ import java.util.List;
import com.google.common.collect.Iterables;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -19,6 +18,7 @@ import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler;
import forge.control.input.Input;
import forge.game.GameLossReason;
+import forge.game.GameState;
import forge.game.player.Player;
import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType;
@@ -160,8 +160,8 @@ class CardFactoryEnchantments {
@Override
public boolean canPlayAI() {
- final List compCreats = AllZoneUtil.getCreaturesInPlay(getActivatingPlayer());
- final List humCreats = AllZoneUtil.getCreaturesInPlay(getActivatingPlayer().getOpponent());
+ final List compCreats = GameState.getCreaturesInPlay(getActivatingPlayer());
+ final List humCreats = GameState.getCreaturesInPlay(getActivatingPlayer().getOpponent());
// only play standstill if comp controls more creatures than
// human
diff --git a/src/main/java/forge/card/cardfactory/CardFactoryInstants.java b/src/main/java/forge/card/cardfactory/CardFactoryInstants.java
index ea953cb0baa..9906b1a9c89 100644
--- a/src/main/java/forge/card/cardfactory/CardFactoryInstants.java
+++ b/src/main/java/forge/card/cardfactory/CardFactoryInstants.java
@@ -24,7 +24,6 @@ import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -38,6 +37,7 @@ import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
+import forge.game.GameState;
import forge.game.phase.PhaseUtil;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
@@ -92,7 +92,7 @@ public class CardFactoryInstants {
@Override
public void resolve() {
Player player = getTargetPlayer();
- List artifacts = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
+ List artifacts = GameState.getCardsIn(ZoneType.Battlefield);
artifacts = CardLists.filter(artifacts, CardPredicates.Presets.ARTIFACTS);
for (int i = 0; i < artifacts.size(); i++) {
@@ -304,7 +304,7 @@ public class CardFactoryInstants {
// the siren flag
final Player player = card.getController();
final Player opponent = player.getOpponent();
- final List creatures = AllZoneUtil.getCreaturesInPlay(opponent);
+ final List creatures = GameState.getCreaturesInPlay(opponent);
for (final Card creature : creatures) {
// skip walls, skip creatures with summoning sickness
// also skip creatures with haste if they came onto the
@@ -320,7 +320,7 @@ public class CardFactoryInstants {
public void resolve() {
final Player player = card.getController();
final Player opponent = player.getOpponent();
- final List creatures = AllZoneUtil.getCreaturesInPlay(opponent);
+ final List creatures = GameState.getCreaturesInPlay(opponent);
for (final Card creature : creatures) {
// System.out.println("Siren's Call - EOT - "+creature.getName()
@@ -328,7 +328,7 @@ public class CardFactoryInstants {
// System.out.println("Siren's Call - EOT - "+creature.getName()
// +" attacked?: "+creature.getCreatureAttackedThisCombat());
if (creature.getSirenAttackOrDestroy() && !creature.getDamageHistory().getCreatureAttackedThisTurn()) {
- if (AllZoneUtil.isCardInPlay(creature)) {
+ if (GameState.isCardInPlay(creature)) {
// System.out.println("Siren's Call - destroying "+creature.getName());
// this should probably go on the stack
Singletons.getModel().getGameAction().destroy(creature);
@@ -417,7 +417,7 @@ public class CardFactoryInstants {
@Override
public void resolve() {
final Player you = card.getController();
- final List ens = CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Battlefield), Presets.ENCHANTMENTS);
+ final List ens = CardLists.filter(GameState.getCardsIn(ZoneType.Battlefield), Presets.ENCHANTMENTS);
final List toReturn = CardLists.filter(ens, new Predicate() {
@Override
public boolean apply(final Card c) {
@@ -521,7 +521,7 @@ public class CardFactoryInstants {
public void resolve() {
final Card myc = this.getParent().getTargetCard();
final Card tgt = this.getTargetCard();
- if (AllZoneUtil.isCardInPlay(myc) && AllZoneUtil.isCardInPlay(tgt)) {
+ if (GameState.isCardInPlay(myc) && GameState.isCardInPlay(tgt)) {
if (myc.canBeTargetedBy(this) && tgt.canBeTargetedBy(this)) {
tgt.addDamage(myc.getNetAttack(), myc);
}
diff --git a/src/main/java/forge/card/cardfactory/CardFactoryLands.java b/src/main/java/forge/card/cardfactory/CardFactoryLands.java
index 7f07c8f49aa..cb992011d7b 100644
--- a/src/main/java/forge/card/cardfactory/CardFactoryLands.java
+++ b/src/main/java/forge/card/cardfactory/CardFactoryLands.java
@@ -25,7 +25,6 @@ import javax.swing.JOptionPane;
import com.google.common.base.Predicate;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -37,6 +36,7 @@ import forge.card.cost.Cost;
import forge.card.spellability.AbilityActivated;
import forge.card.spellability.Target;
import forge.control.input.Input;
+import forge.game.GameState;
import forge.game.phase.PhaseType;
import forge.game.player.Player;
import forge.game.zone.PlayerZone;
@@ -97,7 +97,7 @@ class CardFactoryLands {
boolean needsTheMana = false;
final Player ai = card.getController();
if (ai.getLife() > 3) {
- final int landsize = AllZoneUtil.getPlayerLandsInPlay(ai).size();
+ final int landsize = GameState.getPlayerLandsInPlay(ai).size();
for (Card c : ai.getCardsIn(ZoneType.Hand)) {
if (landsize == c.getCMC()) {
needsTheMana = true;
@@ -145,7 +145,7 @@ class CardFactoryLands {
@Override
public boolean apply(final Card c) {
- return AllZoneUtil.isCardInPlay(c) && c.isCreature()
+ return GameState.isCardInPlay(c) && c.isCreature()
&& (c.getTurnInZone() == Singletons.getModel().getGameState().getPhaseHandler().getTurn());
}
};
@@ -181,7 +181,7 @@ class CardFactoryLands {
@Override
public void resolve() {
this.inPlay.clear();
- this.inPlay.addAll(AllZoneUtil.getCardsIn(ZoneType.Battlefield));
+ this.inPlay.addAll(GameState.getCardsIn(ZoneType.Battlefield));
for (final Card targ : CardLists.filter(this.inPlay, targets)) {
targ.addCounter(Counters.P1P1, 1);
}
diff --git a/src/main/java/forge/card/cardfactory/CardFactorySorceries.java b/src/main/java/forge/card/cardfactory/CardFactorySorceries.java
index 6ecb651c493..20be0d7760b 100644
--- a/src/main/java/forge/card/cardfactory/CardFactorySorceries.java
+++ b/src/main/java/forge/card/cardfactory/CardFactorySorceries.java
@@ -32,7 +32,6 @@ import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
import forge.AllZone;
-import forge.AllZoneUtil;
import forge.Card;
import forge.CardLists;
@@ -50,6 +49,7 @@ import forge.card.spellability.Target;
import forge.control.input.Input;
import forge.control.input.InputPayManaCost;
import forge.control.input.InputPayManaCostAbility;
+import forge.game.GameState;
import forge.game.player.ComputerUtil;
import forge.game.player.Player;
import forge.game.player.PlayerUtil;
@@ -262,15 +262,15 @@ public class CardFactorySorceries {
public boolean canPlayAI() {
final Player ai = getActivatingPlayer();
final Player opp = ai.getOpponent();
- List humTokenCreats = CardLists.filter(AllZoneUtil.getCreaturesInPlay(opp), Presets.TOKEN);
- List compTokenCreats = CardLists.filter(AllZoneUtil.getCreaturesInPlay(ai), Presets.TOKEN);
+ List humTokenCreats = CardLists.filter(GameState.getCreaturesInPlay(opp), Presets.TOKEN);
+ List compTokenCreats = CardLists.filter(GameState.getCreaturesInPlay(ai), Presets.TOKEN);
return compTokenCreats.size() > humTokenCreats.size();
} // canPlayAI()
@Override
public void resolve() {
- List tokens = AllZoneUtil.getCreaturesInPlay();
+ List tokens = GameState.getCreaturesInPlay();
tokens = CardLists.filter(tokens, Presets.TOKEN);
CardFactoryUtil.copyTokens(tokens);
@@ -318,7 +318,7 @@ public class CardFactorySorceries {
// Vector> computerBasic = new Vector();
// figure out which basic land types the computer has
- List land = AllZoneUtil.getPlayerLandsInPlay(Singletons.getControl().getPlayer().getOpponent());
+ List land = GameState.getPlayerLandsInPlay(Singletons.getControl().getPlayer().getOpponent());
for (final String element : Constant.Color.BASIC_LANDS) {
final List cl = CardLists.getType(land, element);
@@ -353,7 +353,7 @@ public class CardFactorySorceries {
// when this spell resolves all basic lands which were not
// selected are sacrificed.
for (int i = 0; i < target.size(); i++) {
- if (AllZoneUtil.isCardInPlay(target.get(i)) && !saveList.contains(target.get(i))) {
+ if (GameState.isCardInPlay(target.get(i)) && !saveList.contains(target.get(i))) {
Singletons.getModel().getGameAction().sacrifice(target.get(i), this);
}
}
@@ -402,7 +402,7 @@ public class CardFactorySorceries {
/* && !saveList.contains(c) */) {
// get all other basic[count] lands human player
// controls and add them to target
- List land = AllZoneUtil.getPlayerLandsInPlay(c.getController());
+ List land = GameState.getPlayerLandsInPlay(c.getController());
List cl = CardLists.getType(land, humanBasic.get(this.count));
cl = CardLists.filter(cl, new Predicate() {
@Override
@@ -576,7 +576,7 @@ public class CardFactorySorceries {
List> lands = new ArrayList>();
for (Player p : Singletons.getModel().getGameState().getPlayers())
{
- lands.add(AllZoneUtil.getPlayerLandsInPlay(p));
+ lands.add(GameState.getPlayerLandsInPlay(p));
}
int min = Integer.MAX_VALUE;
@@ -626,7 +626,7 @@ public class CardFactorySorceries {
List> creats = new ArrayList>();
for (Player p : Singletons.getModel().getGameState().getPlayers())
{
- creats.add(AllZoneUtil.getCreaturesInPlay(p));
+ creats.add(GameState.getCreaturesInPlay(p));
}
int min = Integer.MAX_VALUE;
for(List h : creats) {
@@ -668,12 +668,12 @@ public class CardFactorySorceries {
int diff = 0;
final Player ai = getActivatingPlayer();
final Player opp = ai.getOpponent();
- final List humLand = AllZoneUtil.getPlayerLandsInPlay(opp);
- final List compLand = AllZoneUtil.getPlayerLandsInPlay(ai);
+ final List humLand = GameState.getPlayerLandsInPlay(opp);
+ final List compLand = GameState.getPlayerLandsInPlay(ai);
diff += humLand.size() - compLand.size();
- final List humCreats = AllZoneUtil.getCreaturesInPlay(opp);
- List compCreats = AllZoneUtil.getCreaturesInPlay(ai);
+ final List humCreats = GameState.getCreaturesInPlay(opp);
+ List compCreats = GameState.getCreaturesInPlay(ai);
compCreats = CardLists.filter(compCreats, CardPredicates.Presets.CREATURES);
diff += 1.5 * (humCreats.size() - compCreats.size());
@@ -826,7 +826,7 @@ public class CardFactorySorceries {
}
}
- List bidded = CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Graveyard), CardPredicates.Presets.CREATURES);
+ List bidded = CardLists.filter(GameState.getCardsIn(ZoneType.Graveyard), CardPredicates.Presets.CREATURES);
for (final Card c : bidded) {
for(int i = 0; i < types.size(); i++) {
if (c.isType(types.get(i))) {
@@ -988,7 +988,7 @@ public class CardFactorySorceries {
if (card.getChoice(i).equals(cardChoice[2])) {
final Card c = ab2card[0];
if (c != null) {
- if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) {
+ if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) {
final int boost = x[0] * -1;
c.addTempAttackBoost(boost);
c.addTempDefenseBoost(boost);
@@ -997,7 +997,7 @@ public class CardFactorySorceries {
@Override
public void execute() {
- if (AllZoneUtil.isCardInPlay(c)) {
+ if (GameState.isCardInPlay(c)) {
c.addTempAttackBoost(-1 * boost);
c.addTempDefenseBoost(-1 * boost);
@@ -1015,14 +1015,14 @@ public class CardFactorySorceries {
final ArrayList cs = new ArrayList();
cs.addAll(ab3cards);
for (final Card c : cs) {
- if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) {
+ if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) {
c.addExtrinsicKeyword("Fear");
final Command untilEOT = new Command() {
private static final long serialVersionUID = 986259855862338866L;
@Override
public void execute() {
- if (AllZoneUtil.isCardInPlay(c)) {
+ if (GameState.isCardInPlay(c)) {
c.removeExtrinsicKeyword("Fear");
}
}
@@ -1302,7 +1302,7 @@ public class CardFactorySorceries {
final ArrayList display = new ArrayList();
// get all
- final List creatures = AllZoneUtil.getCreaturesInPlay();
+ final List