diff --git a/Mage/src/main/java/mage/abilities/keyword/MorphAbility.java b/Mage/src/main/java/mage/abilities/keyword/MorphAbility.java index 2738a54846..7ea7f48f7e 100644 --- a/Mage/src/main/java/mage/abilities/keyword/MorphAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/MorphAbility.java @@ -100,7 +100,7 @@ public class MorphAbility extends StaticAbility implements AlternativeSourceCost protected static final String ABILITY_KEYWORD = "Morph"; protected static final String ABILITY_KEYWORD_MEGA = "Megamorph"; protected static final String REMINDER_TEXT = "(You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)"; - protected static final String REMINDER_TEXT_MEGA = "(You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its megamorph cost and put a +1/+1 counter on it.)"; + protected static final String REMINDER_TEXT_MEGA = "(You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its megamorph cost and put a +1/+1 counter on it.)"; protected String ruleText; protected AlternativeCost2Impl alternateCosts = new AlternativeCost2Impl(ABILITY_KEYWORD, REMINDER_TEXT, new GenericManaCost(3)); protected Costs morphCosts; @@ -194,7 +194,8 @@ public class MorphAbility extends StaticAbility implements AlternativeSourceCost @Override public boolean isAvailable(Ability source, Game game) { - return true; + return game.isMainPhase() && game.getActivePlayerId().equals(source.getControllerId()) + && (game.getStack().isEmpty() || (game.getStack().size() == 1 && game.getStack().getFirst().getSourceId().equals(source.getSourceId()))); } @Override @@ -282,10 +283,7 @@ public class MorphAbility extends StaticAbility implements AlternativeSourceCost @Override public String getCastMessageSuffix(Game game) { - StringBuilder sb = new StringBuilder(); - int position = 0; - sb.append(alternateCosts.getCastSuffixMessage(position)); - return sb.toString(); + return alternateCosts.getCastSuffixMessage(0); } @Override diff --git a/Mage/src/main/java/mage/game/stack/Spell.java b/Mage/src/main/java/mage/game/stack/Spell.java index 57a0fb74f9..bd421709e6 100644 --- a/Mage/src/main/java/mage/game/stack/Spell.java +++ b/Mage/src/main/java/mage/game/stack/Spell.java @@ -432,6 +432,13 @@ public class Spell extends StackObjImpl implements Card { @Override public String getLogName() { + if (faceDown) { + if (getCardType().contains(CardType.CREATURE)) { + return "face down creature spell"; + } else { + return "face down spell"; + } + } return GameLog.getColoredObjectIdName(card); } @@ -451,7 +458,7 @@ public class Spell extends StackObjImpl implements Card { @Override public List getCardType() { - if (this.getSpellAbility().getSpellAbilityType().equals(SpellAbilityType.FACE_DOWN_CREATURE)) { + if (faceDown) { List cardTypes = new ArrayList<>(); cardTypes.add(CardType.CREATURE); return cardTypes; diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index 4b6c31e4ad..0b84f713b1 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -2768,7 +2768,9 @@ public abstract class PlayerImpl implements Player, Serializable { case STATIC: if (card.getCardType().contains(CardType.LAND) && ability instanceof AlternativeSourceCosts) { if (canLandPlayAlternateSourceCostsAbility(card, available, ability, game)) { // e.g. Land with Morph - playable.add(card.getId()); + if (game.canPlaySorcery(getId())) { + playable.add(card.getId()); + } break Abilities; } }