diff --git a/Mage.Sets/src/mage/sets/magic2011/SacredWolf.java b/Mage.Sets/src/mage/sets/magic2011/SacredWolf.java index b29db853c02..544b704293f 100644 --- a/Mage.Sets/src/mage/sets/magic2011/SacredWolf.java +++ b/Mage.Sets/src/mage/sets/magic2011/SacredWolf.java @@ -37,6 +37,7 @@ import mage.Constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.CantTargetSourceEffect; +import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.filter.FilterStackObject; @@ -45,13 +46,6 @@ import mage.filter.FilterStackObject; * @author BetaSteward_at_googlemail.com */ public class SacredWolf extends CardImpl { - - private static final FilterStackObject filter = new FilterStackObject("spells or abilities your opponents control"); - - static { - filter.setTargetController(TargetController.OPPONENT); - } - public SacredWolf(UUID ownerId) { super(ownerId, 196, "Sacred Wolf", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{G}"); this.expansionSetCode = "M11"; @@ -59,7 +53,7 @@ public class SacredWolf extends CardImpl { this.color.setGreen(true); this.power = new MageInt(3); this.toughness = new MageInt(1); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantTargetSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new HexproofAbility()); } public SacredWolf(final SacredWolf card) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/TrollAscetic.java b/Mage.Sets/src/mage/sets/mirrodin/TrollAscetic.java index 225b676db08..2dc6cfe48e7 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/TrollAscetic.java +++ b/Mage.Sets/src/mage/sets/mirrodin/TrollAscetic.java @@ -39,6 +39,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.CantTargetSourceEffect; import mage.abilities.effects.common.RegenerateSourceEffect; +import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.filter.FilterStackObject; @@ -47,12 +48,6 @@ import mage.filter.FilterStackObject; * @author Loki */ public class TrollAscetic extends CardImpl { - private static FilterStackObject filter = new FilterStackObject("spells or abilities your opponents control"); - - static { - filter.setTargetController(Constants.TargetController.OPPONENT); - } - public TrollAscetic (UUID ownerId) { super(ownerId, 135, "Troll Ascetic", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{G}{G}"); this.expansionSetCode = "MRD"; @@ -61,7 +56,7 @@ public class TrollAscetic extends CardImpl { this.color.setGreen(true); this.power = new MageInt(3); this.toughness = new MageInt(2); - this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new CantTargetSourceEffect(filter, Constants.Duration.WhileOnBattlefield))); + this.addAbility(new HexproofAbility()); this.addAbility(new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{1}{G}"))); } diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/ThruntheLastTroll.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/ThruntheLastTroll.java index 7cf5d3419d9..45ae1007fd8 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/ThruntheLastTroll.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/ThruntheLastTroll.java @@ -40,6 +40,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.CantCounterSourceEffect; import mage.abilities.effects.common.CantTargetSourceEffect; import mage.abilities.effects.common.RegenerateSourceEffect; +import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.filter.FilterStackObject; @@ -48,12 +49,6 @@ import mage.filter.FilterStackObject; * @author Loki */ public class ThruntheLastTroll extends CardImpl { - private static FilterStackObject filter = new FilterStackObject("spells or abilities your opponents control"); - - static { - filter.setTargetController(Constants.TargetController.OPPONENT); - } - public ThruntheLastTroll (UUID ownerId) { super(ownerId, 92, "Thrun, the Last Troll", Rarity.MYTHIC, new CardType[]{CardType.CREATURE}, "{2}{G}{G}"); this.expansionSetCode = "MBS"; @@ -64,7 +59,7 @@ public class ThruntheLastTroll extends CardImpl { this.power = new MageInt(4); this.toughness = new MageInt(4); this.addAbility(new SimpleStaticAbility(Constants.Zone.ALL, new CantCounterSourceEffect())); - this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new CantTargetSourceEffect(filter, Constants.Duration.WhileOnBattlefield))); + this.addAbility(new HexproofAbility()); this.addAbility(new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{1}{G}"))); } diff --git a/Mage/src/mage/abilities/keyword/HexproofAbility.java b/Mage/src/mage/abilities/keyword/HexproofAbility.java new file mode 100644 index 00000000000..5ab32a479e9 --- /dev/null +++ b/Mage/src/mage/abilities/keyword/HexproofAbility.java @@ -0,0 +1,38 @@ +package mage.abilities.keyword; + +import mage.Constants; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.CantTargetSourceEffect; +import mage.filter.FilterStackObject; + +/** + * Hexproof + * (This creature can't be the target of spells or abilities your opponents control.) + * + * @author loki + */ +public class HexproofAbility extends SimpleStaticAbility { + private static FilterStackObject filter = new FilterStackObject("spells or abilities your opponents control"); + + static { + filter.setTargetController(Constants.TargetController.OPPONENT); + } + + public HexproofAbility() { + super(Constants.Zone.BATTLEFIELD, new CantTargetSourceEffect(filter, Constants.Duration.WhileOnBattlefield)); + } + + public HexproofAbility(final HexproofAbility ability) { + super(ability); + } + + @Override + public SimpleStaticAbility copy() { + return new HexproofAbility(this); + } + + @Override + public String getRule() { + return "Hexproof"; + } +}