From 4d832326a31a02182c20f4db584833546cd3bb59 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Wed, 30 Aug 2017 17:31:06 +0200 Subject: [PATCH] * Added log message. --- .../cost/CastWithoutPayingManaCostEffect.java | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/Mage/src/main/java/mage/abilities/effects/common/cost/CastWithoutPayingManaCostEffect.java b/Mage/src/main/java/mage/abilities/effects/common/cost/CastWithoutPayingManaCostEffect.java index 97938cd85d5..c389ece434b 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/cost/CastWithoutPayingManaCostEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/cost/CastWithoutPayingManaCostEffect.java @@ -25,13 +25,12 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. */ - package mage.abilities.effects.common.cost; import mage.abilities.Ability; -import mage.constants.ComparisonType; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; +import mage.constants.ComparisonType; import mage.constants.Outcome; import mage.filter.common.FilterNonlandCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -39,13 +38,15 @@ import mage.game.Game; import mage.players.Player; import mage.target.Target; import mage.target.common.TargetCardInHand; +import org.apache.log4j.Logger; /** * @author fireshoes - Original Code * @author JRHerlehy - Implement as seperate class - *

- * Allows player to choose to cast as card from hand without paying its mana cost. - *

+ *

+ * Allows player to choose to cast as card from hand without paying its mana + * cost. + *

*/ public class CastWithoutPayingManaCostEffect extends OneShotEffect { @@ -73,19 +74,27 @@ public class CastWithoutPayingManaCostEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - if (controller == null) return false; + if (controller == null) { + return false; + } Target target = new TargetCardInHand(filter); - if (target.canChoose(source.getSourceId(), controller.getId(), game) && - controller.chooseUse(outcome, "Cast a card with converted mana cost " + manaCost + - " or less from your hand without paying its mana cost?", source, game)) { + if (target.canChoose(source.getSourceId(), controller.getId(), game) + && controller.chooseUse(outcome, "Cast a card with converted mana cost " + manaCost + + " or less from your hand without paying its mana cost?", source, game)) { Card cardToCast = null; boolean cancel = false; while (controller.canRespond() && !cancel) { if (controller.chooseTarget(outcome, target, source, game)) { cardToCast = game.getCard(target.getFirstTarget()); - if (cardToCast != null && cardToCast.getSpellAbility().canChooseTarget(game)) { - cancel = true; + if (cardToCast != null) { + if (cardToCast.getSpellAbility() == null) { + Logger.getLogger(CastWithoutPayingManaCostEffect.class).fatal("Card: " + cardToCast.getName() + " is no land and has no spell ability!"); + cancel = true; + } + if (cardToCast.getSpellAbility().canChooseTarget(game)) { + cancel = true; + } } } else { cancel = true;