diff --git a/src/forge/CardFactoryUtil.java b/src/forge/CardFactoryUtil.java index e44d17ffa3b..95d5ea21327 100644 --- a/src/forge/CardFactoryUtil.java +++ b/src/forge/CardFactoryUtil.java @@ -1237,9 +1237,8 @@ public class CardFactoryUtil { @Override public boolean canPlay() { // unMorphing a card is a Special Action, and not effected by Linvala - //CardList Silence = AllZoneUtil.getPlayerCardsInPlay(AllZone.GameAction.getOpponent(getSourceCard().getController())); - //Silence = Silence.getName("Linvala, Keeper of Silence"); - return sourceCard.isFaceDown() && AllZone.GameAction.isCardInPlay(sourceCard); // && Silence.size() == 0; + return sourceCard.getController().equals(this.getActivatingPlayer()) && sourceCard.isFaceDown() + && AllZone.GameAction.isCardInPlay(sourceCard); } };//morph_up diff --git a/src/forge/GameAction.java b/src/forge/GameAction.java index e2193dd6b99..cec14976fce 100644 --- a/src/forge/GameAction.java +++ b/src/forge/GameAction.java @@ -2739,6 +2739,7 @@ public class GameAction { }//isAttached(Card c) public boolean playCard(Card c) { + // this can only be called by the Human HashMap map = new HashMap(); SpellAbility[] abilities = canPlaySpellAbility(c.getSpellAbility()); ArrayList choices = new ArrayList(); @@ -2748,8 +2749,8 @@ public class GameAction { for(SpellAbility sa:abilities) { // for uncastables like lotus bloom, check if manaCost is blank + sa.setActivatingPlayer(AllZone.HumanPlayer); if(sa.canPlay() && (!sa.isSpell() || !sa.getManaCost().equals(""))) { - sa.setActivatingPlayer(c.getController()); choices.add(sa.toString()); map.put(sa.toString(), sa); } diff --git a/src/forge/GuiDisplay3.java b/src/forge/GuiDisplay3.java index 93e390365f7..538db636387 100644 --- a/src/forge/GuiDisplay3.java +++ b/src/forge/GuiDisplay3.java @@ -154,6 +154,7 @@ public class GuiDisplay3 extends JFrame implements CardContainer, Display, NewCo if(!c.isLand()) { SpellAbility[] sa = c.getSpellAbility(); + sa[1].setActivatingPlayer(AllZone.HumanPlayer); if(sa[1].canPlay() && !c.isUnCastable()) AllZone.GameAction.playSpellAbility(sa[1]); } else if (CardFactoryUtil.canHumanPlayLand()) diff --git a/src/forge/GuiDisplay4.java b/src/forge/GuiDisplay4.java index a0af4d5f599..ed7cbbd760b 100644 --- a/src/forge/GuiDisplay4.java +++ b/src/forge/GuiDisplay4.java @@ -159,6 +159,7 @@ public class GuiDisplay4 extends JFrame implements CardContainer, Display, NewCo if(!c.isLand()) { SpellAbility[] sa = c.getSpellAbility(); + sa[1].setActivatingPlayer(AllZone.HumanPlayer); if(sa[1].canPlay() && !c.isUnCastable()) AllZone.GameAction.playSpellAbility(sa[1]); } else if (CardFactoryUtil.canHumanPlayLand())