diff --git a/Mage.Sets/src/mage/cards/e/EntreatTheAngels.java b/Mage.Sets/src/mage/cards/e/EntreatTheAngels.java
index 8c6b068c01..e0a0f4cc41 100644
--- a/Mage.Sets/src/mage/cards/e/EntreatTheAngels.java
+++ b/Mage.Sets/src/mage/cards/e/EntreatTheAngels.java
@@ -40,15 +40,14 @@ import mage.game.permanent.token.AngelToken;
/**
*
* @author noxx
-
+ *
*/
public class EntreatTheAngels extends CardImpl {
public EntreatTheAngels(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{X}{W}{W}{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{W}{W}{W}");
-
- // create X 4/4 white Angel creature tokens with flying.
+ // Create X 4/4 white Angel creature tokens with flying.
this.getSpellAbility().addEffect(new CreateTokenEffect(new AngelToken(), new ManacostVariableValue()));
// Miracle {X}{W}{W}
diff --git a/Mage/src/main/java/mage/abilities/keyword/MiracleAbility.java b/Mage/src/main/java/mage/abilities/keyword/MiracleAbility.java
index 20996fb662..8c50e898c0 100644
--- a/Mage/src/main/java/mage/abilities/keyword/MiracleAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/MiracleAbility.java
@@ -24,11 +24,11 @@
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
-*/
-
+ */
package mage.abilities.keyword;
import mage.abilities.Ability;
+import mage.abilities.SpellAbility;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.costs.mana.ManaCost;
import mage.abilities.costs.mana.ManaCosts;
@@ -45,61 +45,67 @@ import mage.watchers.common.MiracleWatcher;
/**
* 702.92. Miracle
*
- * 702.92a Miracle is a static ability linked to a triggered ability (see rule 603.10).
- * "Miracle [cost]" means "You may reveal this card from your hand as you draw it if
- * it's the first card you've drawn this turn. When you reveal this card this way,
- * you may cast it by paying [cost] rather than its mana cost."
+ * 702.92a Miracle is a static ability linked to a triggered ability (see rule
+ * 603.10). "Miracle [cost]" means "You may reveal this card from your hand as
+ * you draw it if it's the first card you've drawn this turn. When you reveal
+ * this card this way, you may cast it by paying [cost] rather than its mana
+ * cost."
*
- * 702.92b If a player chooses to reveal a card using its miracle ability, he or she
- * plays with that card revealed until that card leaves his or her hand, that ability
- * resolves, or that ability otherwise leaves the stack.
+ * 702.92b If a player chooses to reveal a card using its miracle ability, he or
+ * she plays with that card revealed until that card leaves his or her hand,
+ * that ability resolves, or that ability otherwise leaves the stack.
*
- * You can cast a card for its miracle cost only as the miracle triggered ability resolves.
- * If you don't want to cast it at that time (or you can't cast it, perhaps because
- * there are no legal targets available), you won't be able to cast it later for the miracle cost.
+ * You can cast a card for its miracle cost only as the miracle triggered
+ * ability resolves. If you don't want to cast it at that time (or you can't
+ * cast it, perhaps because there are no legal targets available), you won't be
+ * able to cast it later for the miracle cost.
*
- * RULINGS:
- * You still draw the card, whether you use the miracle ability or not. Any ability that
- * triggers whenever you draw a card, for example, will trigger. If you don't cast the card
- * using its miracle ability, it will remain in your hand.
+ * RULINGS: You still draw the card, whether you use the miracle ability or not.
+ * Any ability that triggers whenever you draw a card, for example, will
+ * trigger. If you don't cast the card using its miracle ability, it will remain
+ * in your hand.
*
- * You can reveal and cast a card with miracle on any turn, not just your own, if it's the
- * first card you've drawn that turn.
+ * You can reveal and cast a card with miracle on any turn, not just your own,
+ * if it's the first card you've drawn that turn.
*
- * You don't have to reveal a drawn card with miracle if you don't wish to cast it at that time.
+ * You don't have to reveal a drawn card with miracle if you don't wish to cast
+ * it at that time.
*
- * You can cast a card for its miracle cost only as the miracle triggered ability resolves.
- * If you don't want to cast it at that time (or you can't cast it, perhaps because there are
- * no legal targets available), you won't be able to cast it later for the miracle cost.
+ * You can cast a card for its miracle cost only as the miracle triggered
+ * ability resolves. If you don't want to cast it at that time (or you can't
+ * cast it, perhaps because there are no legal targets available), you won't be
+ * able to cast it later for the miracle cost.
*
- * You cast the card with miracle during the resolution of the triggered ability. Ignore any timing
- * restrictions based on the card's type.
+ * You cast the card with miracle during the resolution of the triggered
+ * ability. Ignore any timing restrictions based on the card's type.
*
- * It's important to reveal a card with miracle before it is mixed with the other cards in your hand.
+ * It's important to reveal a card with miracle before it is mixed with the
+ * other cards in your hand.
*
- * Multiple card draws are always treated as a sequence of individual card draws. For example, if
- * you haven't drawn any cards yet during a turn and cast a spell that instructs you to draw three
- * cards, you'll draw them one at a time. Only the first card drawn this way may be revealed and cast
- * using its miracle ability.
+ * Multiple card draws are always treated as a sequence of individual card
+ * draws. For example, if you haven't drawn any cards yet during a turn and cast
+ * a spell that instructs you to draw three cards, you'll draw them one at a
+ * time. Only the first card drawn this way may be revealed and cast using its
+ * miracle ability.
*
- * If the card with miracle leaves your hand before the triggered ability resolves, you won't be able
- * to cast it using its miracle ability.
+ * If the card with miracle leaves your hand before the triggered ability
+ * resolves, you won't be able to cast it using its miracle ability.
*
- * You draw your opening hand before any turn begins. Cards you draw for your opening hand
- * can't be cast using miracle.
+ * You draw your opening hand before any turn begins. Cards you draw for your
+ * opening hand can't be cast using miracle.
*
* @author noxx, LevelX2
*/
-
public class MiracleAbility extends TriggeredAbilityImpl {
+
private static final String staticRule = " (You may cast this card for its miracle cost when you draw it if it's the first card you drew this turn.)";
private String ruleText;
@SuppressWarnings("unchecked")
public MiracleAbility(Card card, ManaCosts miracleCosts) {
- super(Zone.HAND, new MiracleEffect((ManaCosts)miracleCosts), true);
- addWatcher(new MiracleWatcher());
- ruleText = "Miracle " + miracleCosts.getText() + staticRule;
+ super(Zone.HAND, new MiracleEffect((ManaCosts) miracleCosts), true);
+ addWatcher(new MiracleWatcher());
+ ruleText = "Miracle " + miracleCosts.getText() + staticRule;
}
public MiracleAbility(final MiracleAbility ability) {
@@ -161,17 +167,12 @@ class MiracleEffect extends OneShotEffect {
// use target pointer here, so it's the same card that triggered the event (not gone back to library e.g.)
Card card = game.getCard(getTargetPointer().getFirst(game, source));
if (controller != null && card != null) {
- ManaCosts costRef = card.getSpellAbility().getManaCostsToPay();
+ SpellAbility abilityToCast = card.getSpellAbility().copy();
+ ManaCosts costRef = abilityToCast.getManaCostsToPay();
// replace with the new cost
costRef.clear();
costRef.add(miracleCosts);
- controller.cast(card.getSpellAbility(), game, false);
-
- // Reset the casting costs (in case the player cancels cast and plays the card later)
- costRef.clear();
- for (ManaCost manaCost : card.getSpellAbility().getManaCosts()) {
- costRef.add(manaCost);
- }
+ controller.cast(abilityToCast, game, false);
return true;
}
return false;