diff --git a/src/main/java/forge/AllZone.java b/src/main/java/forge/AllZone.java index d879e0b8da2..83549ba4dbf 100644 --- a/src/main/java/forge/AllZone.java +++ b/src/main/java/forge/AllZone.java @@ -495,6 +495,25 @@ public final class AllZone implements NewConstants { return null; } + + public static boolean isCardInZone(final Card c, Constant.Zone zone) { + final FGameState gameState = Singletons.getModel().getGameState(); + if (gameState == null) { + return false; + } + + if (zone.equals(Constant.Zone.Stack) && gameState.getStackZone().contains(c)) { + return true; + } + + else for (Player p : gameState.getPlayers()) { + if(p.getZone(zone).contains(c)) { + return true; + } + } + + return false; + } /** *

diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 9bace681482..9c9610ee782 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -8091,5 +8091,9 @@ public class Card extends GameEntity implements Comparable { } return false; } + + public boolean isInZone(final Constant.Zone zone) { + return AllZone.isCardInZone(this, zone); + } } // end Card class diff --git a/src/main/java/forge/card/staticAbility/StaticAbility.java b/src/main/java/forge/card/staticAbility/StaticAbility.java index d1685bb2b6b..07d0767477f 100644 --- a/src/main/java/forge/card/staticAbility/StaticAbility.java +++ b/src/main/java/forge/card/staticAbility/StaticAbility.java @@ -303,8 +303,7 @@ public class StaticAbility { effectZone = Zone.smartValueOf(this.mapParams.get("EffectZone")); } - if ((effectZone != null) - && (!AllZone.getZoneOf(this.hostCard).getZoneType().equals(effectZone) || this.hostCard.isPhasedOut())) { + if ((effectZone != null) && (!this.hostCard.isInZone(effectZone) || this.hostCard.isPhasedOut())) { return false; }