From 24faec3d12c63f3734e9196cbda9623034272389 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Thu, 7 Apr 2016 22:34:20 +0200 Subject: [PATCH] The Gitrog Monster - Fixed possible null pointer exception. --- .../sets/riseoftheeldrazi/EvolvingWilds.java | 11 ++-- .../TheGitrogMonster.java | 4 +- .../OneOrMoreCardsGoToGraveyardTest.java | 64 +++++++++++++++++++ 3 files changed, 72 insertions(+), 7 deletions(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/triggers/OneOrMoreCardsGoToGraveyardTest.java diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/EvolvingWilds.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/EvolvingWilds.java index c6b083ef076..0dec8c54ac1 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/EvolvingWilds.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/EvolvingWilds.java @@ -25,19 +25,18 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. */ - package mage.sets.riseoftheeldrazi; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Rarity; -import mage.constants.Zone; import mage.abilities.ActivatedAbilityImpl; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; import mage.filter.common.FilterBasicLandCard; import mage.target.common.TargetCardInLibrary; @@ -50,6 +49,8 @@ public class EvolvingWilds extends CardImpl { public EvolvingWilds(UUID ownerId) { super(ownerId, 228, "Evolving Wilds", Rarity.COMMON, new CardType[]{CardType.LAND}, null); this.expansionSetCode = "ROE"; + + // {T}, Sacrifice Evolving Wilds: Search your library for a basic land card and put it onto the battlefield tapped. Then shuffle your library. this.addAbility(new EvolvingWildsAbility()); } diff --git a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/TheGitrogMonster.java b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/TheGitrogMonster.java index ca5388454e6..34932ba8130 100644 --- a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/TheGitrogMonster.java +++ b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/TheGitrogMonster.java @@ -107,11 +107,11 @@ class TheGitrogMonsterTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { ZoneChangeGroupEvent zEvent = (ZoneChangeGroupEvent) event; - if (Zone.GRAVEYARD == zEvent.getToZone()) { + if (Zone.GRAVEYARD == zEvent.getToZone() && zEvent.getCards() != null) { for (Card card : zEvent.getCards()) { UUID cardOwnerId = card.getOwnerId(); List cardType = card.getCardType(); - if(cardOwnerId != null + if (cardOwnerId != null && card.getOwnerId().equals(getControllerId()) && cardType != null && cardType.contains(CardType.LAND)) { diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/OneOrMoreCardsGoToGraveyardTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/OneOrMoreCardsGoToGraveyardTest.java new file mode 100644 index 00000000000..3f771aff48f --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/OneOrMoreCardsGoToGraveyardTest.java @@ -0,0 +1,64 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * 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 org.mage.test.cards.triggers; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author LevelX2 + */ +public class OneOrMoreCardsGoToGraveyardTest extends CardTestPlayerBase { + + @Test + public void TestCrawlingSensation() { + // At the beginning of your upkeep, you may put the top two cards of your library into your graveyard. + // Whenever one or more land cards are put into your graveyard from anywhere for the first time each turn, put a 1/1 green Insect creature token onto the battlefield. + addCard(Zone.BATTLEFIELD, playerA, "Crawling Sensation"); + + addCard(Zone.LIBRARY, playerA, "Mountain"); + // {T}, Sacrifice Evolving Wilds: Search your library for a basic land card and put it onto the battlefield tapped. Then shuffle your library. + addCard(Zone.HAND, playerA, "Evolving Wilds"); + + playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Evolving Wilds"); + + activateAbility(2, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}, Sacrifice"); + setChoice(playerA, "Mountain"); + + setStopAt(2, PhaseStep.BEGIN_COMBAT); + execute(); + + assertGraveyardCount(playerA, "Evolving Wilds", 1); + assertPermanentCount(playerA, "Mountain", 1); + assertPermanentCount(playerA, "Insect", 2); + + } +}