fix NPE caused by null predicate

This commit is contained in:
Maxmtg
2013-12-07 23:12:37 +00:00
parent 77b241eb68
commit 0b9d254e12

View File

@@ -85,26 +85,21 @@ public class ChooseCardNameEffect extends SpellAbilityEffect {
if (p.isHuman()) { if (p.isHuman()) {
final String message = validDesc.equals("card") ? "Name a card" : "Name a " + validDesc + " card."; final String message = validDesc.equals("card") ? "Name a card" : "Name a " + validDesc + " card.";
Predicate<PaperCard> cpp = null; Predicate<PaperCard> cpp = Predicates.alwaysTrue();
if ( StringUtils.containsIgnoreCase(valid, "nonland") ) {
if ( StringUtils.containsIgnoreCase(valid, "nonland") )
{
cpp = Predicates.compose(CardRulesPredicates.Presets.IS_NON_LAND, PaperCard.FN_GET_RULES); cpp = Predicates.compose(CardRulesPredicates.Presets.IS_NON_LAND, PaperCard.FN_GET_RULES);
} }
if ( StringUtils.containsIgnoreCase(valid, "nonbasic") ) if ( StringUtils.containsIgnoreCase(valid, "nonbasic") ) {
{
cpp = Predicates.compose(Predicates.not(CardRulesPredicates.Presets.IS_BASIC_LAND), PaperCard.FN_GET_RULES); cpp = Predicates.compose(Predicates.not(CardRulesPredicates.Presets.IS_BASIC_LAND), PaperCard.FN_GET_RULES);
} }
if ( StringUtils.containsIgnoreCase(valid, "noncreature") )
{ if ( StringUtils.containsIgnoreCase(valid, "noncreature") ) {
cpp = Predicates.compose(Predicates.not(CardRulesPredicates.Presets.IS_CREATURE), PaperCard.FN_GET_RULES); cpp = Predicates.compose(Predicates.not(CardRulesPredicates.Presets.IS_CREATURE), PaperCard.FN_GET_RULES);
} } else if ( StringUtils.containsIgnoreCase(valid, "creature") ) {
else if ( StringUtils.containsIgnoreCase(valid, "creature") )
{
cpp = Predicates.compose(CardRulesPredicates.Presets.IS_CREATURE, PaperCard.FN_GET_RULES); cpp = Predicates.compose(CardRulesPredicates.Presets.IS_CREATURE, PaperCard.FN_GET_RULES);
} }
PaperCard cp = p.getController().chooseSinglePaperCard(sa, message, cpp, sa.getSourceCard().getName()); PaperCard cp = p.getController().chooseSinglePaperCard(sa, message, cpp, sa.getSourceCard().getName());
Card instanceForPlayer = Card.fromPaperCard(cp, p); // the Card instance for test needs a game to be tested Card instanceForPlayer = Card.fromPaperCard(cp, p); // the Card instance for test needs a game to be tested
if (!instanceForPlayer.isValid(valid, host.getController(), host)) if (!instanceForPlayer.isValid(valid, host.getController(), host))