From f08ec6f2aabe0b5b299f7a9119a19b3dd71317bd Mon Sep 17 00:00:00 2001 From: Duncan Townsend Date: Wed, 21 Jan 2015 22:16:31 -0500 Subject: [PATCH] Fixed null pointer dereference in Veilstone Amulet --- .../sets/futuresight/VeilstoneAmulet.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/Mage.Sets/src/mage/sets/futuresight/VeilstoneAmulet.java b/Mage.Sets/src/mage/sets/futuresight/VeilstoneAmulet.java index 624b130fc48..5861cc4a01a 100644 --- a/Mage.Sets/src/mage/sets/futuresight/VeilstoneAmulet.java +++ b/Mage.Sets/src/mage/sets/futuresight/VeilstoneAmulet.java @@ -35,7 +35,7 @@ import mage.constants.CardType; import mage.abilities.common.SpellCastControllerTriggeredAbility; - +import mage.filter.FilterSpell; import mage.abilities.effects.ContinuousRuleModifiyingEffectImpl; import mage.constants.Duration; import mage.constants.Outcome; @@ -55,7 +55,10 @@ public class VeilstoneAmulet extends CardImpl { this.expansionSetCode = "FUT"; // Whenever you cast a spell, creatures you control can't be the targets of spells or abilities your opponents control this turn. - this.addAbility(new SpellCastControllerTriggeredAbility(new VeilstoneAmuletEffect(), false)); + this.addAbility(new SpellCastControllerTriggeredAbility(new VeilstoneAmuletEffect(), + new FilterSpell(), + false, + "Whenever you cast a spell, creatures you control can't be the targets of spells or abilities your opponents control this turn.")); } public VeilstoneAmulet(final VeilstoneAmulet card) { @@ -95,15 +98,15 @@ class VeilstoneAmuletEffect extends ContinuousRuleModifiyingEffectImpl { public boolean applies(GameEvent event, Ability ability, Game game) { if (event.getType() == EventType.TARGET) { Permanent permanent = game.getPermanent(event.getTargetId()); - UUID permanentController = permanent.getControllerId(); - UUID abilityController = ability.getControllerId(); - UUID sourceController = event.getPlayerId(); - - if (permanent != null && - permanent.getCardType().contains(CardType.CREATURE) && - permanentController.equals(abilityController) && - game.getPlayer(abilityController).hasOpponent(sourceController, game)) { - return true; + if (permanent != null) { + UUID permanentController = permanent.getControllerId(); + UUID abilityController = ability.getControllerId(); + UUID sourceController = event.getPlayerId(); + if (permanent.getCardType().contains(CardType.CREATURE) && + permanentController.equals(abilityController) && + game.getPlayer(abilityController).hasOpponent(sourceController, game)) { + return true; + } } } return false;